我将对象的睡眠模式设置为";开始睡眠";以便在启动场景时,刚体等待交互(鼠标单击(激活。我想让对象重置它的位置,以防对象由于某种原因在主屏幕上越界。问题是对象不是";"睡着了";当重置其位置时。顺便说一句,我使用触发器(确切地说是边缘碰撞器(来检测屏幕外的对象。
这是对象的代码。
void Awake()
{
initialPosition = transform.position;
rb = GetComponent<Rigidbody2D>();
}
void OnTriggerExit2D(Collider2D other)
{
if(other.gameObject.tag == "Boundary")
{
transform.position = initialPosition;
rb.Sleep();
}
}
}
我认为你可以设置刚体的约束来冻结它的位置:
_rigidbody.constraints = RigidbodyConstraints.FreezePosition;
更多信息:https://docs.unity3d.com/ScriptReference/RigidbodyConstraints.FreezePosition.html
您还可以使用CCD_;暂停";刚体。
_rigidbody.isKinematic = false;