【问题标题】:Unity Changing Another Class With CollisionUnity 用碰撞改变另一个类
【发布时间】:2017-11-05 04:24:05
【问题描述】:

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

【问题讨论】:

    标签: c# unity3d collision rigid-bodies


    【解决方案1】:

    不太清楚,可能有两种情况。您在 FixedUpdate 中给出了一个力,然后在发生碰撞时您想提供一个新力并停止“恒定”力。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      Xforce = Your_Force_to_be_added;
      
      if (condition)
      {
        minus Xforce first 
      
        add Yforce here
      }   
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多