예제 #1
0
 void Awake()
 {
     transform.rotation = Quaternion.Euler (new Vector3 (Random.Range(0, 30), Random.Range (0, 360)));
     playerHealthController = FindObjectOfType<PlayerHealthController> ();
     State = RoachStates.Idle;
     agroOffset = new Vector3 (
         Random.Range (0, agroOffsetRange) - Random.Range (0, agroOffsetRange),
         Random.Range (0, agroOffsetRange) - Random.Range (0, agroOffsetRange),
         Random.Range (0, agroOffsetRange) - Random.Range (0, agroOffsetRange));
 }
예제 #2
0
    void Agro_Update()
    {
        if (_agroRange.col == null)
        {
            State = RoachStates.Idle;
            return;
        }
        agroCollider = _agroRange.col;

        transform.LookAt (agroCollider.transform.position + agroOffset);

        Vector3 force = transform.forward * 0.25f;

        GetComponent<Rigidbody> ().AddForce (force, ForceMode.Impulse);

        if (lightClose)
        {
            State = RoachStates.Scared;
            lightSpawned = true;
        }
    }
예제 #3
0
 void LightDome_Trigger(GameObject obj)
 {
     Debug.Log ("SCARED");
     _dome = obj;
     State = RoachStates.DomeScared;
 }
예제 #4
0
    void Scared_Update()
    {
        hasBeenScared = true;

        spawnTime = Time.time;
        if (_lightRange.col != null && _lightRange.col.gameObject == null || _lightRange.col == null) {
            State = RoachStates.Idle;
            lightClose = false;
            return;
        }

        lightAgroCollider = _lightRange.col;
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation (lightAgroCollider.gameObject.transform.position, transform.position),0.2f);
        //transform.rotation = Quaternion.Lerp (lightAgroCollider.gameObject.transform.position,);

        if (Vector3.Distance (transform.position, lightAgroCollider.gameObject.transform.position) < _agroColliderRange.x) {
            Vector3 force = (transform.position - lightAgroCollider.gameObject.transform.position);

            force.x = force.x < 0 ? (force.x + _agroColliderRange.x) * -1 : _agroColliderRange.x - force.x;
            force.y = force.y < 0 ? (force.y + _agroColliderRange.y) * -1 : _agroColliderRange.y - force.y;
            force.z = force.z < 0 ? (force.z + _agroColliderRange.z) * -1 : _agroColliderRange.z - force.z;
            force /= 20;
            force.y = force.y / 3;

            if (force.y < 0) {
                force.y = force.y * -1;
            }
            GetComponent<Rigidbody> ().AddForce (force * _ran, ForceMode.Impulse);
        } else {
            GetComponent<Rigidbody> ().AddForce (new Vector3(0, 0.05f), ForceMode.Impulse);
        }
    }
예제 #5
0
 // Update is called once per frame
 void Idle_Update()
 {
     if (lightClose)
     {
         State = RoachStates.Scared;
         lightSpawned = true;
     }
     if (agroClose && !lightSpawned)
     {
         State = RoachStates.Agro;
     }
     if (Time.time - spawnTime > lifeTime)
     {
         Destroy (gameObject);
     }
     GetComponent<Rigidbody> ().AddForce (transform.forward * 2);
 }