Я хочу, чтобы мой объект продолжал двигаться в направлении цели навсегда или до тех пор, пока он не столкнется, часть столкновения я уже обработал; Тем не менее, у меня проблемы с частью движения.
Сначала я пытаюсь повернуть свою цель, используя эти строки кода
Vector2 diff = target - transform.position;
float angle = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0.0f, 0.0f, angle);
Это работает отлично, и мой объект вращается в нужном мне направлении. В моем методе обновления у меня есть следующее
if (isMoving)
{
Vector2 f = transform.forward;
transform.position = Vector3.MoveTowards(transform.position, target + Vector3.forward, speed * Time.deltaTime);
}
Теперь это работает, но не достигает цели, и я знаю, почему, это имеет смысл, но не уверен, как это исправить. Объект движется к точке в правильном направлении, но я не хочу, чтобы он останавливался на цели, я хочу, чтобы он продолжал движение.
я тоже пробовал
rb.MovePosition(rb.position + f * Time.deltaTime * speed);
rb — это твердое тело2D
так же как
rb.AddForce(rb.position + f * Time.deltaTime * speed);
Но в обоих случаях объект вращается, но никогда не движется.
Я также использовал перевод и то же поведение, что и MovePosition.
P.S. это 2D игра