>假设我试图在与触发器发生碰撞时改变力。当我添加新的力时,我还需要在固定的更新类中取消以前的力。如何在碰撞类中暂时禁用固定更新类中的力?我尝试添加 rb。Sleep() 到碰撞类,但这只会冻结玩家。有什么想法吗?谢谢。
void FixedUpdate()
{
rb.AddForce(Vector3.down * gravity);
private void OnTriggerStay(UnityEngine.Collider collision)
{
if (collision.gameObject.name == "Trigger")
{
rb.AddForce(Vector3.forward * gravity)
}
}
不太清楚,因为可能有两种情况。您在 FixedUpdate 中给出了一个力,然后在碰撞时您希望提供一个新的力并停止"恒定"力。
void FixedUpdate(){
if(condition==false){return;}
rb.AddForce(gravity);
}
然后在碰撞中切换该条件。
但是你在更新中施加的力只是重力。
因此,您可以使用rb.useGravity并将其设置为打开/关闭。
真的无法理解你到底想说什么 但是,我得到的是减去在当前要添加的当前 Yforce 之前添加的 Xforce。 如果是这样,您可以使用变量来保存(之前是减号)Xforce值,并在添加Yforce时首先减去它。
Xforce = Your_Force_to_be_added;
if (condition)
{
minus Xforce first
add Yforce here
}