团结改变另一类与碰撞

时间:2017-11-05 04:24:05

标签: c# unity3d collision rigid-bodies

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

2 个答案:

答案 0 :(得分:0)

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

Xforce = Your_Force_to_be_added;

if (condition)
{
  minus Xforce first 

  add Yforce here
}   

答案 1 :(得分:0)

不太清楚,因为可能有两种情况。你有一个在FixedUpdate中给出的力,然后在碰撞时你想要提供一个新的力量并停止"常数"之一。

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

然后在碰撞中切换那个条件。

但你在更新中应用的力量只是引力。

因此,您可以使用rb.useGravity并将其设置为开/关。