c# - How to make enemies turn and move towards player when near? Unity3D -
i trying make enemy object turn , start moving towards player object when player comes within vicinity.
for turning have been testing transform.lookat() function although isn't returning desired results when player close enemy object enemy starts tilt backwards , want enemy able rotate along y axis, in advance.
using unityengine; using system.collections; public class enemycontroller : monobehaviour { public transform visionpoint; private playercontroller player; public transform player; public float visionangle = 30f; public float visiondistance = 10f; public float movespeed = 2f; public float chasedistance = 3f; private vector3? lastknownplayerposition; // use initialization void start () { player = gameobject.findobjectoftype<playercontroller> (); } // update called once per frame void update () { // not giving desired results transform.lookat(player); } void fixedupdate () { } void () { vector3 deltatoplayer = player.transform.position - visionpoint.position; vector3 directiontoplayer = deltatoplayer.normalized; float dot = vector3.dot (transform.forward, directiontoplayer); if (dot < 0) { return; } float distancetoplayer = directiontoplayer.magnitude; if (distancetoplayer > visiondistance) { return; } float angle = vector3.angle (transform.forward, directiontoplayer); if(angle > visionangle) { return; } raycasthit hit; if(physics.raycast(transform.position, directiontoplayer, out hit, visiondistance)) { if (hit.collider.gameobject == player.gameobject) { lastknownplayerposition = player.transform.position; } } } }
change @ target:
void update () { vector3 lookat = player.position; lookat.y = transform.position.y; transform.lookat(lookat); }
this way @ target on same height object.
Comments
Post a Comment