【发布时间】:2017-01-30 04:14:58
【问题描述】:
我正在统一制作这款清版游戏,它具有以下机制:当玩家的对撞机撞到敌人的:
public GameObject obj;
...
void OnTriggerEnter(Collider collider){
obj=collider.gameObject;
}
那么,当玩家攻击时,如果它与obj的距离足够小,敌人就会受到伤害:
void hit(){
if(kicked&&close){ //if he is kicking and is close enough
obj.GetComponent<health>().DealDamage(damage); //this is inside a try/catch, just in case obj=null
(...)
}
问题是,如果有 2 个敌人碰到玩家,只有最后一个会被分配给变量 obj,所以他会独自承受打击,这是我不希望发生的。
有什么建议吗?我应该更换吗
GameObject obj;
有一个数组?怎么样?
然后,在 OnTriggerEnter 方法上,将对象添加到数组中? (怎么做?)
【问题讨论】:
-
数组的大小是不可变的,你需要一个大小可以动态收缩和增长的数据结构。请改用
List。 -
如果我使用一个比我需要的更大的数组怎么办?
-
替代方法 - 使用
Physics.OverlapSphere()之类的方法在攻击时检查玩家攻击范围内的敌人,然后相应地伤害他们(如果有的话)。 -
@DavidSpira 这将取决于你是否可以明确地说出什么是“比你需要的更多”。我不建议只制作一个 10,000 长度的数组,因为那会非常浪费。
标签: c# unity3d gameobject