Quantcast
Channel: Questions in topic: "stay"
Viewing all articles
Browse latest Browse all 18

Enemies walk to waypoints and stop in specific ones

$
0
0
Hey thats the point... i just have a multiple waypoint set for every enemy, and i now included some code to make them stop in Stay tagged ones... but it just glitches out .. :( this is the new code for it var Waypoint:Transform []; var speed = 5; var currentWaypoint:int; var loop:boolean = true; var viewAngle:float = 360; var InDistance:Vector3; var PlayerPos:Vector3; var InDistanceMag:float; var Seen:boolean = false; var InAngle:float; var DistanceToSpot:float = 7; var Alarm:GameObject; var SubjectInSight:Transform; var Lives:int = 4; var Hit:AudioClip[]; var TimeToStay:float; function Awake(){ Waypoint[0] = transform; Alarm = GameObject.Find("Alarm"); } function Update () { PlayerPos = GameObject.Find("Player").transform.position; if(currentWaypoint < Waypoint.Length && Waypoint[currentWaypoint].tag != "Stay"){ var target:Vector3 = Waypoint[currentWaypoint].position; var moveDirection:Vector3 = target - transform.position; var velocity = rigidbody.velocity; if(moveDirection.magnitude < 1){ currentWaypoint ++; } else if(moveDirection.magnitude > 1 ){ velocity = moveDirection.normalized * speed *Time.deltaTime; } } if(Waypoint[currentWaypoint].CompareTag("Stay")){ Stay(); } if(currentWaypoint > Waypoint.Length){ if(loop){ currentWaypoint = 0; } else{ velocity = Vector3.zero; } } rigidbody.velocity = velocity; transform.LookAt(Vector3(target.x,transform.position.y,target.z)); THE CODE CONTINUES, BUT IT JUST ISNT IMPORTANT UNTIL function Stay(){ currentWaypoint ++; print("Yielding"); yield WaitForSeconds(TimeToStay); } Ok thats the new code, but the one that worked till the moment was : var Waypoint:Transform []; var speed = 5; var currentWaypoint:int; var loop:boolean = true; var viewAngle:float = 360; var InDistance:Vector3; var PlayerPos:Vector3; var InDistanceMag:float; var Seen:boolean = false; var InAngle:float; var DistanceToSpot:float = 7; var Alarm:GameObject; var SubjectInSight:Transform; var Lives:int = 4; var Hit:AudioClip[]; function Awake(){ Waypoint[0] = transform; Alarm = GameObject.Find("Alarm"); } function Update () { PlayerPos = GameObject.Find("Player").transform.position; if(currentWaypoint < Waypoint.Length){ var target:Vector3 = Waypoint[currentWaypoint].position; var moveDirection:Vector3 = target - transform.position; var velocity = rigidbody.velocity; if(moveDirection.magnitude < 1){ currentWaypoint ++; } else{ velocity = moveDirection.normalized * speed *Time.deltaTime; } } else{ if(loop){ currentWaypoint = 0; } else{ velocity = Vector3.zero; } } rigidbody.velocity = velocity; transform.LookAt(Vector3(target.x,transform.position.y,target.z)); //CHECK SPOTTING PLAYER InDistance = PlayerPos - transform.position; InDistance.y = 0; InAngle = Vector3.Angle(PlayerPos - transform.position,transform.forward); if(InDistance.magnitude <= DistanceToSpot && InAngle <= viewAngle) { var hit:RaycastHit; Physics.Raycast(transform.position,Vector3.Normalize(PlayerPos - transform.position),hit,50); if(hit.collider.CompareTag("wall")){ Seen = false; } else if(hit.collider.CompareTag("Player")){ Seen = true; } InDistanceMag = InDistance.magnitude; } //ACTIVATE ALARM!! if(Seen==true){ Alarm.SendMessage("Trigger"); stopmoving(); } } function OnCollisionEnter(other:Collision){ if(other.gameObject.tag == ("Bullet")){ Lives -= 1; audio.clip = Hit[Random.Range(0,2)]; audio.Play(); Destroy(other.gameObject); if(Lives == 0){ Destroy (gameObject); } } } function stopmoving(){ Instantiate(SubjectInSight,Vector3(transform.position.x,transform.position.y + 1,transform.position.z),Quaternion.identity); transform.LookAt(PlayerPos); Destroy(this); }

Viewing all articles
Browse latest Browse all 18

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>