团结用碰撞改变另一个类



>假设我试图在与触发器发生碰撞时改变力。当我添加新的力时,我还需要在固定的更新类中取消以前的力。如何在碰撞类中暂时禁用固定更新类中的力?我尝试添加 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
}   

最新更新