How do I have my AI script stop moving towards its way-point while still moving forward? I’m trying to make my AI run in fear when clicked on. Right now, it runs, but he will make a large circle in order to keep going for the way-point.
I just tried replacing variable dir with “transform.forward * speed * Time.deltaTime;” when mouse clicks object but its not working.
The Full AI code:
var speed = 6;
var deer = 10;
var tap = 100;
var rotate;
var target : Transform;
private var waypoint : int;
//Movement Script
function Awake(){
}
function Update () {
var dir = (target.position - transform.position).normalized;
var hit : RaycastHit;
if(Physics.Raycast(transform.position, transform.forward, hit, 15)){
if(hit.transform != transform){
dir += hit.normal * 50;
}
}
var leftR = transform.position;
var rightR = transform.position;
leftR.x -= 2;
rightR.x += 2;
if(Physics.Raycast(leftR, transform.forward, hit, 8)){
if(hit.transform != transform){
dir += hit.normal * 50;
}
}
if(Physics.Raycast(rightR, transform.forward, hit, 8)){
if(hit.transform != transform){
dir += hit.normal * 50;
}
}
var rot = Quaternion.LookRotation(dir);
transform.rotation = Quaternion.Slerp(transform.rotation, rot, Time.deltaTime);
transform.position += transform.forward * speed * Time.deltaTime;
//Destroy Object at Destination
if (target) {
var dist = Vector3.Distance(target.position, transform.position);
if(dist <= 5){
Destroy(this.gameObject);
}
}
}
//Mouse Events
function OnMouseEnter() {
LevelController.Points += deer + 10;
}
function OnMouseDown () {
LevelController.Points += tap + 100;
speed = 25;
ChangeDirection();
yield WaitForSeconds (60);
Destroy(this.gameObject);
}
//Random Direction Script
function ChangeDirection() {
rand = Random.Range(2,-2);
switch(rand){
case -2:
rotate = -135;
break;
case -1:
rotate = -45;
break;
case 1:
rotate = 45;
break;
case 2:
rotate = 135;
break;
default:
rotate = 0;
break;
}
if(rotate!=0){
transform.Rotate(Vector3.up, rotate);
}
}