我是团结的新手。我正面临一个移动物体的问题。我为gameObject指定了一个速度,但是当它到达特定位置(23,14,-750)时,游戏对象会冻结。我不知道为什么。有时它会继续移动物体,有时会突然停止。出了什么问题?谢谢
{
if (transform.localPosition.z <= -760) {
gameObject.SetActive (false);
}
gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed);
}
答案 0 :(得分:2)
如果您将对象设置为非活动状态,它将&#34;冻结&#34;:
if (transform.localPosition.z <= -760) {
gameObject.SetActive (false);
}
不确定你期望SetActive(false)做什么,但它有停止所有逻辑的结果,包括特定游戏对象的位置更新和碰撞。
答案 1 :(得分:0)
所以不要让你的对象无效。保存您在Vector3中的初始位置。
Vector3 initPosition = gameObject.rigidbody.position;
并在您的条件中设置此值
if (transform.localPosition.z <= -760) {
gameObject.rigidbody.position = initPosition;
}
答案 2 :(得分:0)
这可能会解决问题,当您仅提供速度时,它不可避免地会在一段时间后冻结。保持速度的技巧必须将速度与Time.deltatime相加
这将使刚体保持更新,并且速度不会停止。
{
if (transform.localPosition.z <= -760) {
gameObject.SetActive (false);
}
gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed+Time.deltatime);
}