【发布时间】:2021-12-27 18:38:54
【问题描述】:
当我开始关卡时,我的游戏对象(火箭)会飞起来(它是一个 2D 游戏)。
现在我想编写这样的代码,当我的 Rocket 到达例如 (0,0,0) 的位置时会做一些事情,但它不是从 0 开始,而是从 (0,-15,0) 开始)。
我尝试编写代码,但它不起作用,我已经检查过它在 (0,0,0) 处 100% 到达,但我不明白为什么发生这种情况时它不运行我的代码。
我的代码:
public class Flying : MonoBehaviour
{
public float speed = 5f;
private void FixedUpdate()
{
transform.position += new Vector3(0, 1, 0) * (Time.deltaTime * speed);
//Check if my Rocket arrives at (0,0,0)
if (transform.position == new Vector3(0,0,0))
{
Debug.Log("I'm here!");
speed = 3f;
}
}
}
知道如何解决这个问题吗?
【问题讨论】:
-
您的对象不太可能恰好击中
0,0,0的位置 .. 我想知道您是如何检查的 .. 但您可能被四舍五入的值愚弄了 ;) .. 您应该使用像 @ 这样的某个范围987654323@ .. 阈值应该是你的对象在一帧内可以移动的距离的最小值,所以大约是speed * Time.deltaTime
标签: c# unity3d position transform gameobject