- Home /
Question by
biscuitc0der · Aug 30, 2016 at 05:06 PM ·
javascriptwaitforsecondsdelaymovinggameobject
JS WaitForSeconds Not Working?
I'm new to programming so sorry if I missed anything but I need a way to delay a transform by a bit. Yet, every time I run this code all that happens is the Enemy (what the code is controlling) goes up the z axis. What am I doing wrong.
Code:
var Distance;
var Target : Transform;
var lookAtDistance = 25.0;
var chaseRange = 15.0;
var attackRange = 1.5;
var moveSpeed = 5.0;
var Damping = 6.0;
var attackRepeatTime = 1;
var theBullet : Rigidbody;
var Speed = 120;
var PaintballGun : Transform;
var juke = 40;
var jukeJudge;
var TheDammage = 40;
var enemyPaintball : Transform;
var paintballShot : AudioClip;
private var attackTime : float;
var controller : CharacterController;
var gravity : float = 20.0;
private var MoveDirection : Vector3 = Vector3.zero;
function Start ()
{
attackTime = Time.time;
}
function Update ()
{
enemyPaintball = GameObject.Find("Bullet(Clone)").transform;
Distance = Vector3.Distance(Target.position, transform.position);
jukeJudge = Vector3.Distance(enemyPaintball.position, transform.position);
if (juke >= jukeJudge)
{
jukeFunc();
}
if (Distance < lookAtDistance)
{
lookAt();
}
if (Distance > lookAtDistance)
{
GetComponent.<Renderer>().material.color = Color.green;
}
if (Distance < attackRange)
{
attack();
}
else if (Distance < chaseRange)
{
chase ();
}
}
function lookAt ()
{
GetComponent.<Renderer>().material.color = Color.yellow;
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
}
function jukeFunc () {
{
GetComponent.<Renderer>().material.color = Color.blue;
transform.position.x += 1;
delay();
transform.position.x -= 2;
delay();
transform.position.x += 1;
delay();
transform.position.z += 1;
delay();
transform.position.z -= 1;
delay();
enemyPaintball = GameObject.Find("Bullet(Clone)").transform;
attack();
}
}
function delay () {
yield WaitForSeconds(1.0);
}
function chase ()
{
GetComponent.<Renderer>().material.color = Color.red;
moveDirection = transform.forward;
moveDirection *= moveSpeed;
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
function attack ()
{
PaintballGun.GetComponent.<Animation>().Play("Shooting");
GetComponent.<AudioSource>().PlayOneShot(paintballShot, 1.0);
Debug.Log("enemy ai sound played.");
var clone = Instantiate(theBullet, transform.position, transform.rotation);
clone.velocity = transform.TransformDirection(Vector3(0, 0, Speed));
Destroy (clone.gameObject, 8);
Debug.Log("The Enemy Has Attacked");
}
function ApplyDammage ()
{
chaseRange += 30;
moveSpeed += 2;
lookAtDistance += 40;
}
Comment
Answer by Jason2014 · Dec 16, 2016 at 08:17 PM
Try replacing "delay" function call with WaitForSeconds method. In this case it's possible that "delays" works all in one time, that's because this couldn't work properly.
Your answer
Follow this Question
Related Questions
Need help with delaying a timer (javascript) 2 Answers
Need help with implementing attack speed/delay 1 Answer
Setting Scroll View Width GUILayout 1 Answer
Creating delays without delaying the script 2 Answers
WaitForSeconds, only pausing once 1 Answer