【发布时间】:2018-07-02 00:53:31
【问题描述】:
我有一个对象Enemy 和另一个Wall
敌人有一个CapsuleCollider,而墙有一个BoxCollider
墙会阻止玩家穿过它。但我希望敌人可以穿过墙壁。
我尝试的是设置一个array,其中包含我希望敌人通过的所有墙壁,而不是忽略对敌人物体的碰撞:
for (var i = 0; i < wand.Length; i++)
{
Physics.IgnoreCollision(wand[i].GetComponent<Collider>(), GetComponent<Collider>());
}
但是当他们试图穿过它时,他们仍然会被墙挡住。
我不能将敌人的对撞机设置为触发,因为我需要碰撞来防止它们穿过其他物体。
我也在那个网站上试过这个: https://forum.unity.com/threads/ignore-collisions-by-tag-solved.60387/
function OnCollisionEnter (collision : Collision) {
if (collision.gameObject.tag == "Wall") {
Physics.IgnoreCollision(collision.collider, collider);
}
}
但它也不起作用。
有人知道如何解决这个问题吗?
【问题讨论】:
-
将墙壁放入 Walls 层,将敌人放入 Enemies 层,然后进入物理选项并设置这两层不发生碰撞。
-
@Lestat,请给出正确答案
-
完成@RodrigoRodrigues
-
谢谢。 answer as comment 一直是 SO 中一个难以解决的问题。 (见meta.stackoverflow.com/questions/251597/…)