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)); }
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; } }
void LightDome_Trigger(GameObject obj) { Debug.Log ("SCARED"); _dome = obj; State = RoachStates.DomeScared; }
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); } }
// 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); }