我试图将物体以一定速度移动到一个点,并使其到达该点时停止。
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);
}
答案 0 :(得分:1)
我不明白您的逻辑。如果要按照要求将对象移动到特定位置。在Unity中有一种更简单的移动对象的方法。参见Unity Documentation。
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或选择一个已经存在的gameObject。