C# 刚体速度突然冻结
我是新来的统一体。我面临着一个移动物体的问题。我给游戏对象指定了一个速度,但当它到达一个特定的位置(23,14,-750)时,游戏对象冻结。我不知道为什么。有时物体继续移动,有时突然停止。怎么了?多谢各位C# 刚体速度突然冻结,c#,unity3d,velocity,C#,Unity3d,Velocity,我是新来的统一体。我面临着一个移动物体的问题。我给游戏对象指定了一个速度,但当它到达一个特定的位置(23,14,-750)时,游戏对象冻结。我不知道为什么。有时物体继续移动,有时突然停止。怎么了?多谢各位 { if (transform.localPosition.z <= -760) { gameObject.SetActive (false); } gameObjec
{
if (transform.localPosition.z <= -760) {
gameObject.SetActive (false);
}
gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed);
}
{
如果(transform.localPosition.z将对象设置为非活动,它将“冻结”:
if(transform.localPosition.z所以不要使对象处于非活动状态。将初始位置保存在Vector3中
Vector3 initPosition = gameObject.rigidbody.position;
并在您的条件下设置此值
if (transform.localPosition.z <= -760) {
gameObject.rigidbody.position = initPosition;
}
if(transform.localPosition.z这可能会解决这个问题,当您只提供速度时,它会在一段时间后不可避免地冻结。保持速度不变的诀窍是必须将速度与时间相加。deltatime
这将使刚体保持更新,速度不会停止
{
if (transform.localPosition.z <= -760) {
gameObject.SetActive (false);
}
gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed+Time.deltatime);
}
{
如果(transform.localPosition.z您到底想实现什么?我不希望对象冻结。我只希望它继续移动。但有时它会在特定位置冻结。那么为什么您要在上述条件下将对象设置为非活动状态?当它达到760个位置时。z我希望它处于非活动状态,从其初始位置重新开始,但问题是它在达到760之前是冻结的。LearnCos2D你的问题是什么。不要在更新函数中禁用你的对象。当它设置为非活动时,其余的代码将不会执行。这是正确的,但我在达到760时调用SetActive。但是我的对象在达到此值之前是冻结的。它在750冻结。你如何检查它e位置?例如,如果您将此更新记录在更新中,它可能在停止后不执行更新方法,因此最后一个日志将保持750。它足够接近,可以假设对象不再处于活动状态。您可能希望在SetActive行运行时记录它。实际上,此语法在更新方法中。您认为这是问题所在吗?
{
if (transform.localPosition.z <= -760) {
gameObject.SetActive (false);
}
gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed+Time.deltatime);
}