首页 文章

将Animator附加到克隆GameObject

提问于
浏览
0

我通过For循环实例化游戏对象:

龙经理脚本:

//Instantiate prefab
  enemyDragons2[i] = (GameObject)Instantiate(enemyDragonStandIn,
  PlaceToSpawn - Vector3.forward * 20.4f, Quaternion.identity);

  //Attach script
  enemyDragons2[i].AddComponent<SeekChase>();

在SeekChase脚本中,我在开头:

static Animator anim;

在开始我有:

anim GetComponent<Animator>();

在Unity编辑器中,我设置了所有内容:状态机,参数,转换和条件,从一个动画播放,然后在满足条件时播放到另一个动画 .

我认为每个克隆游戏对象都会附加静态Animator和anim GetComponents()部分,但我不断收到错误:“没有Animator附加到克隆游戏对象,但脚本正在尝试访问它” . 这指向,(错误的位置:

anim.SetBool ("isIdol",false);
anim.SetBool ("isTurning",true);

我也尝试添加到SeekChase:

**public**static Animator anim; (though it dosent seem like I should have to do this.)

在Dragon Manager脚本中(实例化对象)我尝试添加以下行:

static Animator anim; (in the Start)

anim = enemyDragons[i].AddComponent<Animator>();

我收到了错误:“动画师没有玩动画师控制器”

但动画似乎不是通过代码播放,只是默认播放,而不是过渡到下一个(“isTurning”) . 似乎我错过了一些简单的东西 .

任何帮助将不胜感激 .

谢谢 .

============================================ EDIT/Solution

开始 . 如果存在级别错误,Unity不应该让你继续,因为它会让你错误地认识到事物的运作 .

当我测试时,我使用一个预制件(6个)来测试动画 . 他们都在使用SeekChase脚本 . 所以当我按Play时,我总会得到错误:

"No Animator attached to the Clone game Object, but a script is trying to 
    access it".

我有点期待一个错误,因为其他实例化的对象正在通过SeekChase脚本访问他们的Animators,尽管他们没有 . 由于我正在测试一个正在实例化的对象,而Unity允许我“播放”,我不认为该错误与我当前动画问题的功能有关 .

根据你的建议,我能够在状态机中附加转换箭头,让两个动画从一个播放到另一个(之前没有完成) . 但是,条件是我必须设置bool:

if(direction.magnitude < 10.0f) 

  {

                // Animator Stuff####
                anim.SetBool("isIdol",true);
                anim.SetBool("isTurning",true);...

  }


   ..... the second animation was not being played.

然后我想到了持久性错误,并决定将SeekChase脚本注释掉应用于其他游戏对象......然后播放它的第二个动画!希望当我修好所有的预制件并给它们充满信心时,一切都会起作用 .

再次感谢 .

1 回答

  • 0

    首先将enemyDragonStandIn作为游戏对象制作,而无需动画制作实例化,然后制作该游戏对象预制,之后您可以使用rigth动画实例化它,而不是在运行时添加它们 . 最后调用实例化对象

    anim.SetBool ("isTurning",true)
    

相关问题