- Home /
"ArgumentException: get_time can only be called from the main thread."
Hello, Basically i'm trying to make a Zombie attack my "player" but only when the "player" is in a certain range.
I've taken some code from this website (seen here.) . However, i have been getting the following error:
ArgumentException: get_time can only be called from the main thread. Constructors and field initializers will be executed from the loading thread when loading a scene. Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function. Zombie Attack..ctor () (at Assets/3rd Person Script/AIScripts/Zombie Attack.js:10)
Here is the code:
var target : Transform; //the enemy's target var moveSpeed = 3; //move speed var rotationSpeed = 3; //speed of turning var attackThreshold = 3; // distance within which to attack var chaseThreshold = 10; // distance within which to start chasing var giveUpThreshold = 20; // distance beyond which AI gives up var attackRepeatTime = 1; // delay between attacks when within range
private var chasing = false; private var attackTime = Time.time;
var myTransform : Transform; //current transform data of this enemy
function Awake() { myTransform = transform; //cache transform data for easy access/preformance }
function Start() { target = GameObject.FindWithTag("Player").transform; //target the player }
function Update () {
// check distance to target every frame:
var distance = (target.position - myTransform.position).magnitude;
if (chasing) {
//rotate to look at the player
myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
//move towards the player
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
// give up, if too far away from target:
if (distance > giveUpThreshold) {
chasing = false;
}
// attack, if close enough, and if time is OK:
if (distance < attackThreshold && Time.time > attackTime) {
// Attack! (call whatever attack function you like here)
attackTime = Time.time + attackRepeatTime;
}
} else {
// not currently chasing.
// start chasing if target comes close enough
if (distance < chaseThreshold) {
chasing = true;
}
}
}
How do i get rid of this error and make the Zombie follow the "player" within a certain range?
Many thanks.
Answer by Eric5h5 · Nov 22, 2010 at 10:56 PM
Code outside of functions should stick to declaring types or specific values only. Instead of
private var attackTime = Time.time;
use
private var attackTime : float;
Seems that got rid of that error but popped up a new one: "NullReferenceException Zombie Attack.Start () (at Assets/3rd Person Script/AIScripts/Zombie Attack.js:21)"
Also thank you for the fast reply!
Your answer
Follow this Question
Related Questions
2D Random AI 1 Answer
free roaming enemy ai 1 Answer
Top Down Shooter Enemy AI using raycasting 1 Answer
Shooting Damage Help 1 Answer
Complete AI Tutorial? 1 Answer