Как заставить объект двигаться со скоростью в точку, а из этой точки с другой скоростью?

#c# #unity3d

#c# #unity3d

Вопрос:

Я пытаюсь переместить объект со скоростью в точку и заставить его остановиться, когда он достигнет этой точки.

   void FixedUpdate()
    {
      if (transform.position.y == 0f) {
        rb.velocity = new Vector2(-speed, 0f);
      } //first change of the velocity

      if (transform.position.x == 0f){
        rb.velocity = new Vector2(0f, 0f);
      }
    }//here i want to stop
.........................................................

public void MoveR()
    {
      rb.velocity = new Vector2(-speed, upSpeed);
    }
  

Ответ №1:

Я не понимаю вашей логики здесь. Если вы хотите переместить объект в определенное положение, как вы просили. Существует более упрощенный способ перемещения объекта в Unity. Смотрите Документацию Unity.

 public class Example : MonoBehaviour
{
    public Vector3 myTarget;

    private void Start()
    {
        StartCoroutine(MoveTo());
    }

    private IEnumerator MoveTo()
    {
        while (transform.position != myTarget)
        {
            transform.position = Vector3.MoveTowards(transform.position, myTarget, Time.deltaTime * 2f);

            yield return null;
        }

    Debug.Log("We reached Target. Done!");
    yield return null;
    }
}
  

Если вы хотите, вы можете объявить myTarget как GameObject. В этом случае вам нужно будет создать пустой GameObject или выбрать тот, который уже существует.