如何使对象以速度移动到一个点,并从该点以其他速度移动



我试图将一个速度的物体移动到一个点,并在他到达该点时使其停止。

  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);
    }

我不明白你的逻辑。如果要按照要求将对象移动到特定位置。在 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。在这种情况下,您需要创建一个空游戏对象或选择一个已经存在的游戏对象。

最新更新