Rigidbody2D rb;
public float speed = 1f;
Vector2 curPos;
void Update () {
curPos = transform.position;
}
void Awake () {
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate () {
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
Vector2 touchedPos = Camera.main.ScreenToWorldPoint(new Vector2(touch.position.x, touch.position.y));
switch (touch.phase) {
case TouchPhase.Began:
transform.position = Vector3.Lerp(transform.position, touchedPos, Time.fixedDeltaTime);
break;
case TouchPhase.Moved:
transform.position = Vector3.Lerp(transform.position, touchedPos, Time.fixedDeltaTime);
break;
case TouchPhase.Ended:
if (curPos != touchedPos) {
transform.position = Vector3.Lerp(transform.position, touchedPos, Time.fixedDeltaTime);
} break;
}
}
}
Не могу понять в чем ошибка кода. Если я правильно понимаю логику работы TouchPhase то в момент окончания нажатия на экран проверяется условие равно ли текуще положение объекта точки касания. Если нет, то объект продолжает двигаться (ну по крайней мере должен). В итоге после того как я отпускаю палец, обьект перестает двигаться. Что я делаю не так?
Объект у вас двигается только при двух условиях. 1 момент касания. 2 палец двигается. И всё. Так-же сравнивать положение объекта и положение касания это безумие, они никогда не будут идеально соответствовать до целых и уж тем более до стотысячных долей. Зачем вам Rigidbody2D, если вы забив на физику перемещаете координаты объекта сами?
Да и вообще если объект следует за местом, где был тач, нет смысла проверять коснулся ли ты объекта, поскольку тем самым ты задаёшь ему новую позицию следования.
public float speed = 100f;
Vector2 targetPos;
void Update () {
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
Vector2 touchedPos = Camera.main.ScreenToWorldPoint(new Vector2(touch.position.x, touch.position.y));
targetPos = touchedPos;
}
if (targetPos != Vector2.zero) {
Vector2 MoveVector = targetPos-(Vector2)transform.position;
if (MoveVector.magnitude < speed*Time.deltaTime) {
transform.position = targetPos;
GetComponent<Rigidbody2D>().velocity = Vector3.zero;
} else {
GetComponent<Rigidbody2D>().velocity = MoveVector.normalized*speed;
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Только не ругайтесь, пожалуйстаЯ изучаю чужой код и некоторые моменты не понимаю
Создал простое приложение mvc, в представлении (вьюхе) есть главный шаблон примерно такой:
Я хочу сделать чат-бота по типа: ключевое слово-ответЯ понимаю, как его реализовать, но структуризация вводит меня в ступор
У меня есть таблица, которая имеет столбцы number и balanceЯ хочу вывести данные, хранящиеся в них на страницу