- Home /
mecanim keep feet planted
I'm using mecanim to animate the enemy for a game. The enemy is in idle, turns towards me, runs to me, and starts attacking me. The problem is, his feet wont stay planted on the ground when he is attacking and sometimes when he is running. I've tried the foot IK, adjusting the gravity, and adding rigidbodies. I can't seem to figure this out.
var Distance;
var Target : Transform;
var LookAtDistance = 25.0;
var AttackRange = 2.5;
var MoveSpeed = 5.0;
var Damping = 6.0;
var ChaseRange = 15.0;
var Controller : CharacterController;
var Gravity : float = 20;
var AttackRepeatTime = 1;
private var AttackTime : float;
private var MoveDirection : Vector3 = Vector3.zero;
var enemyAttackDamage : float = 10;
var run : Animator ;
function Start ()
{
AttackTime = Time.time;
Target = GameObject.Find("Player").transform;
Controller = this.gameObject.GetComponent("CharacterController");
//animation.Stop("EnemyWalk") ;
run = this.gameObject.GetComponent("Animator");
}
function Update ()
{
if(RespawnMenu.playerIsDead == false)
{
Distance = Vector3.Distance(Target.position, transform.position);
if (Distance < LookAtDistance)
{
LookAt();
run.SetInteger("chase",0);
}
if (Distance > LookAtDistance)
{
renderer.material.color = Color.green;
run.SetInteger("chase",0);
}
if (Distance < AttackRange)
{
Attack();
} else if (Distance < ChaseRange)
{
Chase();
run.SetInteger("chase",1) ;
}
}
}
function LookAt ()
{
renderer.material.color = Color.yellow;
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
}
function Chase ()
{
renderer.material.color = Color.red;
MoveDirection = transform.forward;
MoveDirection *= MoveSpeed;
MoveDirection.y -= Gravity * Time.deltaTime;
Controller.Move(MoveDirection * Time.deltaTime);
}
function Attack ()
{
if (Time.time > AttackTime)
{
Target.SendMessage("playerAttacked", enemyAttackDamage, SendMessageOptions.RequireReceiver);
AttackTime = Time.time + AttackRepeatTime;
}
}
function Anger ()
{
ChaseRange += 30;
MoveSpeed += 2;
LookAtDistance += 40;
}
Comment