重置对象的位置后,如何将rigidbody2d设置在休眠对象上



我将对象的睡眠模式设置为";开始睡眠";以便在启动场景时,刚体等待交互(鼠标单击(激活。我想让对象重置它的位置,以防对象由于某种原因在主屏幕上越界。问题是对象不是";"睡着了";当重置其位置时。顺便说一句,我使用触发器(确切地说是边缘碰撞器(来检测屏幕外的对象。

这是对象的代码。

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;

最新更新