为什么场景中的所有敌人都受到伤害,而我只伤害一个?



所以我有一个脚本在我的场景中生成敌人。每个敌方游戏对象都有一个敌方脚本,用于检测点击或鼠标点击。

当检测到敌人点击时,生命值会下降,如果它低于 0,则游戏对象被摧毁。

void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.transform.tag == "Enemy")
{
health--;
if (health <= 0)
Destroy(gameObject);
}
}
}
}

问题是,当我点击一个敌人时,场景中的每个敌人都会受到伤害,而不仅仅是我点击的那个。

想不通这是为什么。至于出于某种原因,raycast适用于场景中的所有敌人,而不是我点击的位置?

有什么想法吗?

谢谢

因为你从不检查哪个敌人

这行:if (hit.transform.tag == "Enemy")只检查光线是否击中敌人("哦,天哪,他们射杀了鲍勃!"(。要检查光线是否击中了自己,您希望if(hit.transform == this.transform)("我被枪杀了!

或者更好的是,不要把这段代码附加到所有的敌人(10000个敌人,10000个光线投射!(,而是将一个脚本附加到像摄像机这样的东西上,该脚本执行现有检查,但用hit.transform.GetComponent<Enemy>().Damage()替换health--;行,这只会对鼠标指向的敌人造成伤害。

最新更新