NPC moving on the same tile instead of walking around?
Hi there, I'm using this script on a character, which should make them randomly move and for the most part it works, however they are walking and only changing direction, instead of moving off the tile and walking around? Here's the script:
public float directionChangeInterval = 1;
public float maxHeadingChange = 30;
CharacterController controller;
float heading;
Vector3 targetRotation;
void Awake ()
{
controller = GetComponent<CharacterController>();
// Set random initial rotation
heading = Random.Range(0, 360);
transform.eulerAngles = new Vector3(0, heading, 0);
StartCoroutine(NewHeading());
}
void Update ()
{
transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, targetRotation, Time.deltaTime * directionChangeInterval);
var forward = transform.TransformDirection(Vector3.forward);
controller.SimpleMove(forward * speed);
}
/// <summary>
/// Repeatedly calculates a new direction to move towards.
/// Use this instead of MonoBehaviour.InvokeRepeating so that the interval can be changed at runtime.
/// </summary>
IEnumerator NewHeading ()
{
while (true) {
NewHeadingRoutine();
yield return new WaitForSeconds(directionChangeInterval);
}
}
/// <summary>
/// Calculates a new direction to move towards.
/// </summary>
void NewHeadingRoutine ()
{
var floor = Mathf.Clamp(heading - maxHeadingChange, 0, 360);
var ceil = Mathf.Clamp(heading + maxHeadingChange, 0, 360);
heading = Random.Range(floor, ceil);
targetRotation = new Vector3(0, heading, 0);
}
} Any and all help would be appreciated, especially if you could detail what you've done and why! :)
In the line 23, you multiply forward with speed, but there is no variable called speed... you forgot to post that or it isn't in the code?
Your answer
Follow this Question
Related Questions
Hello everyone I have a problem with rounding number of my score 2 Answers
The body of '' cannot be an iterator block because 'void' is not an iterator interface type??? 2 Answers
Coding Errors 1 Answer
A namespace cannot directly contain mambers such as fields or methods... 2 Answers
Flashlight script help! 2 Answers