- Home /
I can't script enemy animation
I’ve been trying to make the enemy play an animation for two days now. It hasn’t been working out for me. Is there something wrong with this code? Am I missing something? Why won’t it play?
Thus far, my enemy chases the player whenever the player triggers into view. It stops chasing the player when the player hides, and it stops in front of walls.
Going back to the problem, I exported my animated model from 3dsmax as an FBX file. I enabled legacy mode in the animation’s rig menu and I gave it a name in the Clips tab in the animations menu. I also added an animation component to my enemy game model with animations in the element fields. The most common error I get is null reference. Why won’t it call my animations? This is my first time scripting animation, I'm not sure how to do this. As far as I know I believe I’m doing everything correctly. Can someone please help me out? I hope it helps if I show my code:
#pragma strict
var detectedCheck : EnemyVolumeOne;
var willAttackCheck : boolean;
var target : Transform;
var moveSpeed = 20;
var rotationSpeed = 5;
var myTransform : Transform;
var enemyLevelCollision : EnemyVolumeTwo;
//recent
/*var animSpeed = 1;
var animName = "MadScientistRun";
var resetTime = 0.0;
var useBackwards = true;*/
//recent
/*function PlayAnimation(AnimName : String){
if(!animation.IsPlaying(AnimName))animation.CrossFadeQueued(AnimName,0.3,QueueMode.PlayNow);
}*/
function Awake(){
myTransform = transform;
}
function start(){
//animation.Play("MadScientistIdle");
}
function Update () {
enemyLevelCollision = GetComponentInChildren(EnemyVolumeTwo);
detectedCheck = GetComponentInChildren(EnemyVolumeOne);
if(detectedCheck.detected == true && enemyLevelCollision.enemyLevelCollide == false){
transform.LookAt(Vector3(target.position.x,transform.position.y,target.position.z));
myTransform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
}//add else statment to make enemy idle
//recent
/*if (enemyLevelCollision.enemyWillAttack == true){
animation[animName].speed = 1;
animation[animName].time = resetTime;
animation.Play(animName);
PlayAnimation("MadScientistRun");
print("Attack!!!");
}*/
}