【问题标题】:Unity collision not being detected未检测到统一碰撞
【发布时间】:2016-04-01 09:57:10
【问题描述】:

我正在学习统一创建一个简单的 fps 游戏,问题是碰撞不会自行更新,例如最初当我的玩家在地面上时,控制台通过“Debug.log(collision.gameObject)”打印“floor”但是当它与其他对象(例如立方体)相交时,控制台会打印出“立方体”但是当我离开它时,控制台不会变回“地板”为什么????

我正在使用 transform.translate 来移动和跳跃,并使用 OnCollisionEnter 方法进行碰撞检测

【问题讨论】:

  • 探索:CollisionStay、CollissionEnter、CollissionExit。物体会离开地板吗?

标签: unity3d


【解决方案1】:

OnCollisionEnter 仅在对象进入碰撞体时触发。

A) 通过在 OnCollisionEnter 发生时添加它们并在 OnCollisionExit 发生时删除它们来列出所有遇到的对象。然后,每当您需要确保自己在“地板”上时,请在列表中检查它。

B) 使用OnCollisionStay,如果您触摸“地板”,每一帧都会通知您。

【讨论】:

    【解决方案2】:

    记住一件事,你想要碰撞的另一个对象需要分配一个碰撞器组件,确保它。将此与上一个答案一起加入。

    【讨论】:

      【解决方案3】:

      我建议验证碰撞。 这里是一个简单的例子:

      void OnCollisionEnter (Collision col){
              if (col.gameObject){
                  Debug.Log("Object name : "+ col.gameObject.name);
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-15
        • 1970-01-01
        • 2017-01-07
        • 1970-01-01
        • 2015-03-27
        • 2015-03-07
        相关资源
        最近更新 更多