Unity中

时间:2017-05-30 15:48:12

标签: c# unity3d collider

我正在制作一个基本的太空射击游戏,但我遇到了触发器对撞机的麻烦。

在游戏中,我有一个子弹预制件,它附有一个胶囊触发器对撞机,敌人现在是一个基本的立方体,附有一个盒子对撞机。

当我运行游戏时,我开始射击子弹,敌人立方体在几次射击之后不会消失。

这是我的子弹预制件的代码:

void OnTriggerEnter(Collider col) {
        if (col.tag == "Enemy") {
            Destroy (col.gameObject);
        }
    }

每个游戏对象的属性截图:

Bullet Prefab:

Bullet Prefab

这是敌人的立方体:

enter image description here

以下是有关正在发生的事情的视频的链接......

https://youtu.be/NjHK6oVP0OQ

1 个答案:

答案 0 :(得分:2)

我知道这个问题可能与评论中发布的问题类似,但我确实找到了另一个解决方案,可能会对有这个问题的人有所帮助。

错误发生是因为我的"子弹"预制件移动速度太快,以至于无法检测到碰撞。

修复: 我将Bullet prefabs Rigidbody的碰撞检测属性更改为Continuous Dynamic,因为它正在快速移动。完全参考刚体碰撞检测模式,链接如下。

enter image description here

https://docs.unity3d.com/ScriptReference/Rigidbody-collisionDetectionMode.html

这与"相似的"之间的区别问题的答案中的答案是答案与Raycasting和非常简单的碰撞器有很大关系(这更像是我想要的)。