Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何忽略对象之间的碰撞_C#_Unity3d - Fatal编程技术网

C# 如何忽略对象之间的碰撞

C# 如何忽略对象之间的碰撞,c#,unity3d,C#,Unity3d,1.我写了一个脚本,在2D游戏中使用OnTiggerEnter查找炮弹击中另一艘船的时间 private void OnTriggerEnter(Collider other) { if (other.tag != "cannonBallWASD" ) { return; } Destroy(other.gameObject); Destroy(gameObject); Debug.Log(other); } 2.使用WAS

1.我写了一个脚本,在2D游戏中使用OnTiggerEnter查找炮弹击中另一艘船的时间

private void OnTriggerEnter(Collider other)
{


    if (other.tag != "cannonBallWASD" )
    {
        return;
    }

    Destroy(other.gameObject);
    Destroy(gameObject);
    Debug.Log(other);
}
2.使用WASD(ShipWASD)控制的船舶向使用箭头键(SHIPWARD)控制的第二艘船舶发射炮弹(cannonballWASD)。此代码位于附加到ShipArrows的脚本上

3.我有一个单独的代码,它使用一个没有网格渲染器(边界)的立方体,它会摧毁任何离开边界的炮弹,看起来它们好像掉进了海里。这是一个双人游戏

4.问题就在这里——因此边界随船移动——它是船箭头的孩子。当我发射大炮时,炮弹击中的是边界,而不是船只对撞机。当我移除边界时,它会像它应该的那样击中飞船,但边界是我想要的

边界和船舶都有并需要在其上触发对撞机。是否有任何方法可以忽略此脚本中的边界,但不能忽略以下脚本中的边界

private void OnTriggerExit(Collider other)
{
    if(other.tag != "cannonBallWASD" && other.tag != "cannonBallArrows")
    {
        return;
    }
    Destroy(other.gameObject);
}
这个脚本使ShipArrows炮弹在离开ShipArrows边界时被摧毁,看起来像是掉进了海里。(两船都这样做。)

要忽略碰撞,请使用

还有一个用于忽略层上的碰撞的

只需将所有要忽略的对象放在一个层中,然后调用函数忽略它们上的层

忽略Collison 3D

Physics.IgnoreCollision(yourFirstCollider, yourSecondCollider, true)
Physics2D.IgnoreCollision(yourFirstCollider, yourSecondCollider, false);

重置/识别Collison 2D

Physics.IgnoreCollision(yourFirstCollider, yourSecondCollider, true)
Physics2D.IgnoreCollision(yourFirstCollider, yourSecondCollider, false);



两个层不必相同。可以忽略来自不同图层的对象上的碰撞。这也可以通过编辑器实现,无需代码,只需分配每个游戏对象层,然后进入“编辑-->项目设置-->物理-->或“编辑-->项目设置-->物理2D”,然后配置哪些层应该从那里彼此碰撞。

因此,当你击中飞船时,它将触发边界呼叫?为什么目标船上有边界?如果你想击沉炮弹,一旦炮弹飞出射击船的边界,它们就应该下海。射击飞船边界显然忽略了其他飞船的炮弹,而不是做
如果不是标签
如果是标签
,把你想要的代码放在if中,忽略其余的。IE
if(other.tag==“theTagToDoCodeOn”){the code}
在我看来,如果返回
if,事情似乎就要过去了