我有两个函数,一个是OnCollisionEnter2D,一个是OnTriggerEnter2D。我需要Collision2D转换为Collider2D反之亦然:Unity - 将Collider2D转换为Collision2D
// c# script
void OnCollisionEnter2D(Collision2D collision) {
foo(collision);
}
void OnTriggerEnter2D(Collider2D collider) {
foo(collider);
}
void foo(Collision2D coll){
//checking inside here
}
当然,这是不会编译,因为我给foo的对撞机,对撞机并没有一个Collision2D。 I have noticed that these two data types are almost the same。我不能投这两个。有人可以帮助我转换或建议一种解决方法吗?
在此先感谢!
编辑:
这是我的检查代码...
int coins;
void Start(){
coins = 0;
}
void foo(Collision2D coll){
if(coll.gameObject.tag == "coin"){
coins++;
}
//this works for both Collision2D and Collider2D because both have the gameObject property
}
谢谢!这真是太棒了...有没有一种方法可以做到这一点,而不必在两个重载之间复制和粘贴代码?那么, – yummypasta
。 TBH碰撞组件只能表现为触发器或碰撞器。因此,为一个碰撞组件注册'OnCollisionEnter()'和'OnTriggerEnter()'是没有用的。如果你真的告诉我你正在尝试做什么,我可以提供更多的帮助,所以请发布'foo()'的实现。 –
当您在游戏开发中处理关键性能代码时,请尝试通过减少计算来编写优化且高效的代码。重复代码在这里没什么大不了的。 –