【发布时间】:2020-02-11 12:49:00
【问题描述】:
我在 C# 中遇到了 OverlapSphere 的问题。我试图进行一次爆炸,对附近的敌人造成伤害,但如果火箭击中一个目标,它只会对这个目标造成伤害。当火箭在附近敌人的地板或墙壁上爆炸时,它不会造成伤害。
EnemyHealth target = collision.collider.gameObject.GetComponent<EnemyHealth>();
Instantiate(explosionEffect, transform.position, transform.rotation);
Collider [] colliders = Physics.OverlapSphere(transform.position, radius);
foreach(Collider nearbyObject in colliders)
{
Collider enemy = nearbyObject.GetComponent<Collider>();
if (enemy != null)
{
target.TakeDamage(damage); //this fuction deal damage to enemies
}
我的代码片段。我不知道如何修复它,这是我的第一款游戏,我之前没有使用 Unity 和 C#。
【问题讨论】:
-
半径是否足以击中目标?对撞机是否正确匹配目标的变换?敌人的对撞机是否在不与爆炸相互作用的层中?我看不出代码有什么问题......可能是统一对象给你带来了麻烦
-
每个敌人的目标都不会改变......所以你会为每个命中的物体损坏同一个物体
-
我认为这可能是原因,但我现在不知道如何解决。我应该在现场制作一张所有敌人的表格还是类似的东西?