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