- Home /
Question by
Mavek · May 20, 2017 at 03:06 AM ·
c#aiwaitforsecondswait
Problem getting AI to wait
Okay so, I am having some problems getting my AI code to take a breath in between running the move code. This is what I have:
public float MoveSpeed = 20f;
public float waitFor;
public bool wait = false;
private float x =0;
private float LoR;
void Update() {
Movment();
LoR = Random.Range(-1f, 1f);
}
void Movment() {
if (LoR > 0 && wait ==false) {
transform.position += MoveSpeed * Vector3.right * Time.deltaTime;
wait = true;
x = 0;
waitFor = Random.Range(20f, 50f);
} else if (LoR <0 && wait == false) {
transform.position += MoveSpeed * Vector3.left * Time.deltaTime;
wait = true;
x = 0;
waitFor = Random.Range(20f, 50f);
}
while (wait == true) {
while (x < waitFor) {
x++;
}
if (x >= waitFor) {
wait = false;
}
}
}
Now what I want is for my code to wait for a random time and then move again, but what I get is spasms all over the place. Any help will be greatly appreciated.
Comment
Best Answer
Answer by toddisarockstar · May 20, 2017 at 03:46 AM
public float MoveSpeed = 20f;
bool moving;
float timer;
float LoR;
void Update() {
if(moving){transform.position += MoveSpeed * Vector3.right * Time.deltaTime*LoR;}
timer -= Time.deltaTime;
if(timer<0){moving=!moving;
if(moving){
//set move time here
timer=UnityEngine.Random.Range(2f,10f);}
else{
//set wait time here
timer=UnityEngine.Random.Range(1f,5f);}
LoR = Random.Range(-10f, 10f);
if(LoR>0){LoR=1;}else{LoR=-1;}
}
}
Your answer
Follow this Question
Related Questions
Pause a script completely 3 Answers
Distribute terrain in zones 3 Answers
Cant Make C# Use waitforseconds Command 3 Answers
Wait in seconds before damaging the player again 2 Answers
Add wait time to enemy's attack 2 Answers