我有一个名为“Target”的游戏对象,其中包含动画控制器,我在树中的游戏对象上有一个胶囊对撞机,名为Robot。我所拥有的当前脚本附加到一个枪对象,如下所示并销毁该对象,当光线投射与对撞机发生碰撞时它会消失,并打印出它撞击的对象的标签和名称(仅用于测试目的): / p>
RaycastHit hit;
if (Physics.Raycast (fpsCam.transform.position, fpsCam.transform.forward, out hit, range)) {
if (hit.transform.tag == "Target") {
print(hit.transform.gameObject.name);
print(hit.transform.gameObject.tag);
hit.transform.gameObject.GetComponent<Animator>().SetBool("isHit", true);
Destroy(hit.transform.gameObject);
target.getTargets = GameObject.FindGameObjectsWithTag ("Target");
target.targetCount = target.getTargets.Length -1;
target.countText.text = (target.targetCount ).ToString ();
}
GameObject impact = Instantiate (impactEffect, hit.point, Quaternion.LookRotation (hit.normal));
Destroy (impact, 1f);
}
}
然而,当我激活动画控制器时,光线投射似乎根本不再碰到对撞机,打印出名称或标签。我在动画师中有一个isHit变量,它应该在设置为true时播放死亡动画然后在没有动画制作者时应该消失但是我不确定如何从子对象访问主对象上的动画制作者那个有对撞机。
答案 0 :(得分:0)
很难说为什么您的代码不起作用或打印出您要查找的值。
尝试调试它,看看它到底在哪里。
但是你的问题是如何访问主要对象上的动画师。将root添加到您的行。
hit.transform.root.GetComponentInChildren<Animator>().SetBool("isHit", true);
我删除了&#34; .gameObject&#34;因为不需要它。此外,GetComponentInChildren将从根开始发现Animator的第一次出现。