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.
↧