//If player standing close on zombie void OnTriggerStay(Collider col) { if (!death) { if (target == null) { //Check if this player if (col.CompareTag("Player")) { Player_MovePlayer pl = col.gameObject.GetComponent <Player_MovePlayer>(); if (!pl.death) { Vect = col.transform.position - transform.position; float angle = Vector3.Angle(transform.forward, Vect); //Check zombie see player? if (angle <= 90f) { target = pl; pl.AddFollowZombie(index); } else { //If zombie don't see player but player wery close to zombie if (4f > Vect.magnitude) { target = pl; pl.AddFollowZombie(index); } } } } } } }
/// <summary> /// Damage zombie /// </summary> /// <param name="damage">damage</param> /// <param name="indexPlayer">player index</param> public void ZombieDamage(int damage, int indexPlayer) { //Take damage Data_PlayerFile_Sr zm = RoomsManager.GetPlayerData(index); zm.Damage(damage); //If zombie not have target follow the attacking if (target == null) { Player_MovePlayer player = RoomsManager.GetPlayerController(indexPlayer); if (player) { target = player; player.AddFollowZombie(index); } } //If zombie death if (zm.HP <= 0) { Death(); string zmName = RoomsManager.GetPlayerData(index).nick; if (!string.IsNullOrEmpty(zmName)) { SQL_SavePlayerData.Kill(indexPlayer, zmName); } } }