我正在制作一个平台游戏(sidescroller),现在我正在为玩家制作手榴弹发射器。
它产生的手榴弹是预制件,这个预制件有一个圆形碰撞器2D,它是爆炸的爆炸半径。
当产生手榴弹时,我会运行它(除其他外);
// Add the initial force
rBody.AddForce(new Vector2(forceX, forceY) *300f);
Invoke("Explode", 2.5f);
我无法弄清楚如何处理Explode
功能。
我想找到那时与圆形碰撞器2D碰撞的所有游戏对象,但我找不到办法。
我希望能够做到这样的事情(不是真正的代码,但你了解我想要做的事情)
void Explode () {
collidingObjects = circleCollider.getCollisions();
foreach(collidingObject as entity) {
if(entity = 'player')
player.pushLeftOrRight()
elseif(entity = 'enemy')
grenade.dealDamage(grenade.damage)
}
Debug.Log("Explode");
Destroy(gameObject);
}
我猜它不会起作用,所以有人能指出我正确的方向吗?
答案 0 :(得分:0)
在手榴弹的脚本中,使用OnTriggerEnter
或OnCollisionEnter
记录碰撞;基本上只有每个手榴弹的HashSet更新并跟踪它碰撞的内容。然后Explode
只需要在调用它时迭代这个集合。