我试图将一个速度的物体移动到一个点,并在他到达该点时使其停止。
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。在这种情况下,您需要创建一个空游戏对象或选择一个已经存在的游戏对象。