大家好:)这里的情况:预制Collider2D不承认光线投射撞机
我有一个baddy预制有两个对撞机部件:用于物理简单CapsuleCollider2D,并触发PolygonCollider2D仅用于鼠标点碰撞。
的PolygonCollider2D通过一个附加的脚本(Baddy.cs)使用仅在需要时更新:
if(this.gameObject.GetComponent<PolygonCollider2D>()!=null){
Destroy(this.gameObject.GetComponent<PolygonCollider2D>());
}
this.gameObject.AddComponent<PolygonCollider2D>();
this.gameObject.GetComponent<PolygonCollider2D>().isTrigger=true;
是的,这是不良的做法,但它得到是工作完成的。它非常完美:在游戏的场景视图中,我可以暂停并看到我们的baddy预制件上确实存在多边形对撞机。
在另一个附加的脚本(CollisionHandler.cs),我们检查我们的baddy鼠标按:
if(MousePress()){
hit=Physics2D.Raycast(level.mousePoint, Vector2.zero, 0f);
if(hit&&hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()){
print("baddy mousePress");
}
}
然而hit.collider==this.gameObject.GetComponent<PolygonCollider2D>()
原来假的,即使我可以立即在手之前打印既hit.collider
和this.gameObject.GetComponent<PolygonCollider2D>()
我们if(MousePress())
并将它们都定义为:
D_Prefab(Clone) (UnityEngine.PolygonCollider2D)
他们不可能是不同PolygonColliders,因为只能有一次一个,因为我们的Baddy脚本祛瘀es并同时创建PolygonCollider。
任何想法可能会出错?