告诉我,如果我有一个挂在主对象上的角色脚本,并且我有一个 Collider2D 挂在其上的子对象(角色头部),我如何通过挂在主对象上的脚本检查子弹是否击中头部对撞机? 毕竟,一切都在一个脚本中会更容易,而不是为身体的各个部位创建不同的脚本以进一步检查命中
告诉我,如果我有一个挂在主对象上的角色脚本,并且我有一个 Collider2D 挂在其上的子对象(角色头部),我如何通过挂在主对象上的脚本检查子弹是否击中头部对撞机? 毕竟,一切都在一个脚本中会更容易,而不是为身体的各个部位创建不同的脚本以进一步检查命中
关注点分离是构建应用程序时的明智之举。所以创建一些脚本是个好主意。您不必编写每个身体部位的脚本(继承自 IBodyPart 等通用接口),这是完全合理的。我建议创建一个 BodyPart 脚本。我们会将这个脚本挂在身体的每个部位(玩家的孩子),无论是头部以传递更多伤害,手臂降低装弹速度,还是腿部降低移动速度。在此脚本中,当击中脚本挂起的对象 (OnCollisionEnter2D) 时,我们将调用一个表示击中的事件(例如,UnityEvent HitBodyPart)。我们也将订阅这个事件任何东西,
为了更清楚,让我举个例子。
玩家等级
玩家对象
头部对象
这个脚本有多大用处?我们可以添加功能!我们只需要按下身体部位对象上的“+”号,例如,通过调用 Player 脚本中描述的 ReduceSpeed 方法将播放器对象传递给播放器(当播放器碰到这个时,它会减慢身体的一部分)
PS 我自己并不认为自己是编程大师,如果有评论,我会编辑这个答案。
为此,有 getchild GetChild
它应该看起来像这样:
Collider coll = this.transform.GetChild(номер).gameObject.GetComponent<Коллайдер>();子元素编号从上到下计数(因为它位于层次结构中)。通过这种方式,您可以获得有关播放器子元素组件的信息。我无法为您提供任何其他帮助。