- Home /
enemy flying through air when targeting player
when the enemy targets me and starts walking towards me, it flies through the air instead of sticking to the ground. also when it is following me it will ignore any colliders and clip through them. how can i fix this? here is my script
pragma strict
var Target : Transform; // Drag your player to attack in here var distance = 30; // Distance var lookAtDistance = 20; // Distance to keep looking at the player var attackRange = 10; // Range to start the attack var attackSpeed = 3.0; // Speed to attack player var dampingLook = 6.0; // Slow the rotation
function Awake() { if(!Target) { Target = GameObject.FindWithTag("Player").transform; } }
function Update() { distance = Vector3.Distance(Target.position, transform.position);
if(canAtackTarget())
{
var targetRotation = Quaternion.LookRotation(Target.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * dampingLook);
}
if(canAtackTarget() && !attackRange){
attack();
}
}
function canAtackTarget() { if(distance > lookAtDistance) { GetComponent.().material.color = Color.green; return false; }
if(distance < attackRange)
{
GetComponent.<Renderer>().material.color = Color.red;
print("Attacking");
attack();
return true;
}
var seeYou : RaycastHit;
// Check to see if there is anything inbetween enemy and player
if(Physics.Linecast(transform.position, Target.position, seeYou))
{
if(seeYou.collider.gameObject.tag != "Player")
{
print("Can not see you " + seeYou.collider.gameObject.name + " in the way");
GetComponent.<Renderer>().material.color = Color.green;
return false;
}
else
{
//Player ditected
GetComponent.<Renderer>().material.color = Color.yellow;
return true;
}
}
return true;
}
function lookAt() { var rotation = Quaternion.LookRotation(Target.position - transform.position, Vector3.up); transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * dampingLook); }
function attack() { // The Vector3 0.2 stops the object going into the floor transform.Translate(Vector3(0, 0.2, 1) * attackSpeed *Time.deltaTime); }
Answer by mafima · Nov 17, 2017 at 05:42 PM
your target rotation is false.
try using transform.LookAt(Target) this should rotate your transform accordingly.
transform.LookAt(Target);
instead of
var targetRotation = Quaternion.LookRotation(Target.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * dampingLook);
Your answer
Follow this Question
Related Questions
Character glitching on Ragdoll 0 Answers
Random Running and Follow at Certain Distance 0 Answers
AI Enemy Follow Player 2 Answers
Follower Airplane problem 1 Answer
My Raycast dont hit. 3 Answers