【问题标题】:Can't get rigidbody collisions to work in Unity3d with box colliders无法使用盒子碰撞器在 Unity3d 中进行刚体碰撞
【发布时间】:2013-10-16 16:17:30
【问题描述】:

所以我正在使用 Unity 创建一个 Android 游戏,但我无法让任何碰撞工作。两个对象都有盒子对撞机,一个附有刚体。当我点击播放时,它只是从地板上掉下来。所以我改为尝试使刚体对象运动并通过 transform.Transform 而不是刚体.addforce 控制它的运动,然后我在角色前面制作了一个立方体,并带有一个已选中“Is Trigger”的盒子对撞机。然后我将此脚本附加到刚体和立方体上。

#pragma strict
function OnTriggerEnter ( block : Collider){

print("BA BAM!");
Destroy(block.gameObject);

}
function Update () {
if (Input.GetKeyDown(KeyCode.Escape)) {
    Application.LoadLevel("MainMenu");
}
}

但我会将角色直接穿过方块,但什么也没有发生!

然后我决定创建一个新的空白场景并制作两个立方体。两者都有盒子对撞机。我将一个拖到另一个之上,并为其添加了刚体物理。但是当我点击播放时,它就从另一个街区掉了下来!任何帮助将不胜感激!

【问题讨论】:

  • 你是否尝试同时检查 isTrigger
  • “当我点击播放时,它会从地板上掉下来。”请确保 (a) 地板连接了对撞机,并且 (b) 有问题的对象在 layers that collide with each other 上。如果你从一个空项目开始,然后将一个 Cube+Rigidbody 放到一个 Plane 上,它们应该会发生碰撞。
  • 我之前没听说过基于层的碰撞检测...我试试看
  • 谢谢!!这现在解决了我的问题!

标签: android unity3d unityscript collision rigid-bodies


【解决方案1】:

触发器不是实体的,因此带有触发器和刚体的盒子会穿过实体对象。一般来说,刚体的物体不应该设置为触发,静止的体积应该设置为触发。除此之外,我尝试了您的代码,它可以正常工作。您确定已将此脚本应用于碰撞的对象吗?

【讨论】:

  • 是的,当物体相互坠落时,触发器关闭,我只有盒子碰撞器和另一个物体上的刚体加碰撞器
  • 我应该重新安装统一吗?或者 Android 物理的​​工作方式可能不同?
【解决方案2】:

使用 Translate 功能移动对象会将对象传送到新的 Vector3 位置,而不是平滑移动。

另外,检查每个对象设置到哪个物理层。然后,进入 Edit -> Physics 编辑哪个 Physics 层可以相互碰撞。

除此之外,我推测这可能是由于您在安装 Unity 时出现了一些错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多