I made a little 3d character in blender and imported him into unity, I added a AI script, but the character supposed to “face” the player, but instead the top of his head faces the player. No matter how many different ways I rotate the character both in blender and unity, I stil get the same result. pic and code included if need be.
var Distance;
var Target : Transform;
var lookAtDistance = 25.0;
var chaseRange = 15.0;
var attackRange = 1.5;
var moveSpeed = 5.0;
var Damping = 6.0;
var attackRepeatTime = 1;
private var attackTime : float;
var controller : CharacterController;
var gravity : float = 20.0;
private var MoveDirection : Vector3 = Vector3.zero;
function Start()
{
attackTime = Time.time;
}
function Update()
{
Distance = Vector3.Distance(Target.position, transform.position);
if(Distance < lookAtDistance)
{
lookAt();
}
if(Distance > lookAtDistance)
{
//renderer.material.color = Color.green;
}
if(Distance < attackRange)
{
attack();
}
else if(Distance < chaseRange)
{
chase();
}
}
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)
{
Debug.Log("Inset Attack and health loss here");
var GUIManager : GUIManager = GameObject.Find("First Person Controller").GetComponent("GUIManager");
GUIManager.AdjustCurrentHealth(-10);
attackTime = Time.time + attackRepeatTime;
}
}
//agressive enemy
function ApplyDamage()
{
chaseRange += 30;
moveSpeed += 2;
lookAtDistance += 40;
}