在两个物体都具有对撞器的情况下,将特定物体移动到另一个特定物体上

时间:2018-07-01 12:35:29

标签: c# unity3d

我有一个对象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);
        }

}

但是它也不起作用。

有人知道如何解决吗?

1 个答案:

答案 0 :(得分:3)

将它们放置在不同的图层中,然后进行设置,以使它们不会相互碰撞。

    1. 将墙壁添加到“墙壁”层。
    1. 将敌人添加到“敌人”层。
    1. 转到“编辑”->“项目设置”->“物理”。并停用这两个图层之间的碰撞。