Quantcast
Channel: Questions in topic: "enemy"
Viewing all articles
Browse latest Browse all 1488

Enemies passing throught walls in fps game need help fixing this

$
0
0
Hi this is Richard Haley I have had asked questions before and had gotten no answer but I have this problem with the enemy AI models they keep on passing through walls in the First Person Shooter type games that I'm currently working on and I need help fixing this problem here is the script that I have been using: using UnityEngine; using System.Collections; public class chase : MonoBehaviour { public Transform player; public Transform head; static Animator anim; string state = "patrol"; public GameObject[] waypoints; int currentWP = 0; float rotSpeed = 0.2f; float speed = 1.5f; float accuracyWP = 5.0f; // Use this for initialization void Start () { anim = GetComponent(); } // Update is called once per frame void Update () { Vector3 direction = player.position - this.transform.position; direction.y = 0; float angle = Vector3.Angle(direction, head.up); if(state == "patrol" && waypoints.Length > 0) { anim.SetBool("isIdle",false); anim.SetBool("isWalking",true); if(Vector3.Distance(waypoints[currentWP].transform.position, transform.position) < accuracyWP) { currentWP++; if(currentWP >= waypoints.Length) { currentWP = 0; } } //rotate towards waypoint direction = waypoints[currentWP].transform.position - transform. position; this.transform.rotation = Quaternion.Slerp(transform.rotation. Quaternion.LookRotation(direction), rotSpeed * Time.deltaTime); this.transform.Translate(0, 0, Time.deltaTime * speed); } if(Vector3.Distance(player.position, this.transform.position) < 10 && (angle < 30 || state == "pursuing")) { currentWP = Random.Range(0,waypoints.Length); //currentWP++; //if(currentWP >= waypoint.Length) //{ // currentWP = 0; //} state = "pursuing" this.transform.rotation = Quaternion.Slerp(this.rotation, Quaternion.LookRotation(direction), rotSpeed * Time.deltaTime); if(direction.magnitude > 5) { this.transform.Translate(0,0,Time.deltaTime * speed); anim.SetBool("isWalking", true); anim.SetBool("isAttacking",false); } else { anim.SetBool("isAttacking",true); anim.SetBool("isWalking",false); state = "patrol" } } } I have also been using both the Mesh Colliders and the Rigidbodies so I hope that this is the right script but none the less some please help me out.

Viewing all articles
Browse latest Browse all 1488

Trending Articles



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