让我先解释一下这个问题:)
我有一个英雄和一个敌人。这是一款格斗游戏。英雄和敌人在动画控制器中都有空闲、阻挡、出拳和 getHit 动画和状态。英雄和敌人都附有脚本。英雄由玩家控制,敌人由AI控制。
现在我先将脚本附加到英雄,然后再附加到敌人。现在,当敌人出拳并且英雄没有防守时,英雄就会受到打击。但是如果敌人没有阻挡并且英雄击中敌人则不会受到打击。这是因为脚本首先附加到 hero。
现在,如果我从两者中删除脚本并首先将敌人脚本附加到敌人,然后将英雄脚本附加到英雄。明智的做法是正确的。在敌人身上会记录命中,而在英雄身上不会记录命中。
我不确定为什么会发生这种情况,我尝试了不同的方法,但问题仍然存在。
我还尝试在网上到处寻找解决方案,但没有一个能解决我的问题。
谢谢 :)
下面是检查敌人是否可以被击中的敌人脚本
void Update () {
myTick++;
currentTick = myTick;
GameObject player = GameObject.Find("theDude");
Animator pAnim = player.GetComponent<Animator>();
//Getting Hit
if (pAnim.GetBool("tIsPunching"))
{
if (anim.GetBool("bEnemyIsDefending") == false)
{
Debug.Log("enemy got hit");
anim.SetTrigger("tEnemyGotHit");
anim.SetBool("bEnemyIsDefending", true);
}
}
}
这是检查英雄是否可以被击中的英雄脚本。
void Update () {
totalTime += Time.deltaTime;
GameObject enemy = GameObject.Find("Enemy");
Animator eAnim = enemy.GetComponent<Animator>();
//Getting Hit
if (eAnim.GetBool("tEnemyIsPunching"))
{
if (anim.GetBool("bIsDefending") == false)
{
Debug.Log("player got hit");
anim.SetTrigger("tGotHit");
}
}
}
我以前没有获取对象,而是拥有一个公共游戏对象,并将英雄和敌人附加到各自的类中。但它没有任何区别。