C# 如何忽略对象之间的碰撞
1.我写了一个脚本,在2D游戏中使用OnTiggerEnter查找炮弹击中另一艘船的时间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
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中,忽略其余的。IEif(other.tag==“theTagToDoCodeOn”){the code}
在我看来,如果返回if,事情似乎就要过去了