Unity Changing Another Class 碰撞

Unity Changing Another Class With Collision

假设我在与触发器发生碰撞时试图改变力。当我添加新力时,我还需要在固定更新 class 中取消之前的力。我如何在碰撞 class 中暂时禁用固定更新 class 中的力?我尝试将 rb.Sleep() 添加到碰撞 class 中,但这只会冻结播放器。有任何想法吗?谢谢

void FixedUpdate()
{
    rb.AddForce(Vector3.down * gravity);

private void OnTriggerStay(UnityEngine.Collider collision)
{

    if (collision.gameObject.name == "Trigger")
    {

        rb.AddForce(Vector3.forward * gravity)
    }
}

真的无法得到你想要说的内容但是,我得到的是减去在现在要添加的当前 Yforce 之前添加的 Xforce。如果是这样,您可以使用变量来保存(以前是负数)Xforce 值并在添加 Yforce 时先减去它。

Xforce = Your_Force_to_be_added;

if (condition)
{
  minus Xforce first 

  add Yforce here
}   

不太清楚,可能有两种情况。你在 FixedUpdate 中有一个力,然后在碰撞时你想提供一个新的力并停止 "constant" 一个。

 void FixedUpdate(){
     if(condition==false){return;}
     rb.AddForce(gravity);
}

然后在碰撞中切换该条件。

但是您在更新中施加的力只是重力。

所以你可以使用rb.useGravity并设置它on/off。