C# 在统一中用重叠球伤害敌人
我对C#中的重叠球体有问题。我试图制造一次爆炸,对附近的敌人造成伤害,但若火箭击中一个目标,它只会对这个目标造成伤害。当火箭在敌人附近的地面或墙上爆炸时,它不会造成伤害C# 在统一中用重叠球伤害敌人,c#,unity3d,overlap,C#,Unity3d,Overlap,我对C#中的重叠球体有问题。我试图制造一次爆炸,对附近的敌人造成伤害,但若火箭击中一个目标,它只会对这个目标造成伤害。当火箭在敌人附近的地面或墙上爆炸时,它不会造成伤害 EnemyHealth target = collision.collider.gameObject.GetComponent<EnemyHealth>(); Instantiate(explosionEffect, transform.position, transform.rotation);
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
}
EnemyHealth target=collision.collider.gameObject.GetComponent();
实例化(爆炸效果、transform.position、transform.rotation);
Collider[]colliders=physical.overlapphere(transform.position,radius);
foreach(碰撞器中的碰撞器近旁对象)
{
对撞机敌人=nearbyObject.GetComponent();
如果(敌人!=null)
{
target.TakeDamage(伤害);//此功能对敌人造成伤害
}
它是我代码的一部分。我不知道如何修复它,这是我的第一个游戏,我以前没有使用Unity和C。你没有在你的循环中设置敌人
EnemyHealth
,相反,你总是使用相同的目标
来造成伤害。你需要为与球体碰撞的每个对象获取EnemyHealth组件:
Instantiate(explosionEffect, transform.position, transform.rotation);
Collider [] colliders = Physics.OverlapSphere(transform.position, radius);
foreach(Collider nearbyObject in colliders)
{
// Assuming that the enemy gameobject with the collider also holds the EnemyHealth script (!)
EnemyHealth enemy = nearbyObject.GetComponent<EnemyHealth>();
if (enemy != null)
{
enemy.TakeDamage(damage); //this fuction deal damage to enemies
}
}
实例化(explosionEffect、transform.position、transform.rotation);
Collider[]colliders=physical.overlapphere(transform.position,radius);
foreach(碰撞器中的碰撞器近旁对象)
{
//假设有对撞机的敌方游戏对象也持有EnemyHealth脚本(!)
EnemyHealth敌人=nearbyObject.GetComponent();
如果(敌人!=null)
{
敌人。受到伤害;//此功能对敌人造成伤害
}
}
注意:调用
GetComponent()可能会很昂贵
因此,如果您经常这样做,您应该尝试为敌人缓存EnemyHealth
组件。半径是否足够长以击中目标?碰撞器是否与目标的变换正确匹配?敌人碰撞器是否位于与爆炸不交互的层中?我看不出有任何错误代码…可能是unity对象引起了你的麻烦每个敌人的目标没有改变…所以你每次命中目标都会损坏同一个对象我想这可能是原因,但我现在不知道如何修复它。我应该制作一张现场所有敌人的表或类似的东西吗?谢谢你的帮助,它修复了我的问题:)