// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2020-09-02 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** using UnityEngine; namespace G { public class Tower_base : MonoBehaviour { //private Hp_bar_fixed script_hpbar; private EntityMainPlayer script_cha; private GameCamera script_cam; private Transform hpbar; private Transform mytransform; private Vector3 attackdir; private float damage; private bool life = true; public int maxhp; public int hp; private short cur_stage_index; public bool iscastle; public bool isObstacle = true; public Transform mydestroy; private bool istower; private void Awake() { mytransform = base.transform; if (mytransform.childCount != 0) { istower = true; } } private void Start() { cur_stage_index = 1; //if (iscastle) //{ // maxhp += (short)((0.1445f * cur_stage_index * cur_stage_index + 6.3873f * cur_stage_index - 5f) * 20f); //} //else //{ // maxhp += (short)((0.1445f * cur_stage_index * cur_stage_index + 6.3873f * cur_stage_index - 5f) * 3f); //} hp = maxhp; //hpbar = GameObject.FindWithTag("efs_mon").GetComponent().CreatHpbar(new Vector2(0.1f, 0.02f), true, false); //hpbar.parent = mytransform; //script_hpbar = hpbar.GetComponent(); script_cha = GameObject.FindWithTag("Player").transform.gameObject.GetComponent(); script_cam = Camera.main.GetComponent(); //hpbar.position = mytransform.position + Vector3.forward * -0.08f + Vector3.up * 0.2f; //script_hpbar.Damaged(maxhp, hp, mytransform, 0.2f, -1); //hpbar.gameObject.SetActive(!isObstacle); //hp = 1; } public void Grabed() { } public void CastleBreak() { life = false; base.GetComponent().enabled = false; Object.Destroy(hpbar.gameObject); Object.Destroy(mytransform.GetChild(0).gameObject); if (iscastle) { //GameObject.FindWithTag("ui").GetComponent().WaveSet(100); } } public bool TankDamage() { hpbar.gameObject.SetActive(true); hp = (short)(hp - maxhp * 0.1f); //script_hpbar.Damaged(maxhp, hp, mytransform, 0.2f, -1); GetComponent().Play(); if (hp <= 0 && life) { CastleBreak(); } return life; } private void OnTriggerEnter(Collider other) { if (other.gameObject.layer < GameLayer.NormalAttack) { return; } switch (other.gameObject.layer) { case GameLayer.NormalAttack: attackdir = mytransform.position - other.transform.position; attackdir.y = 0f; attackdir = Vector3.Normalize(attackdir); //other.transform.root.GetComponent().AddForce(attackdir * -90f); damage = script_cha.damage; script_cam.Hitcam(); break; case GameLayer.PowerAttack: damage = script_cha.damage; script_cam.Hitcam2(1f); break; case GameLayer.SkillAttack: damage = other.GetComponent().mass; script_cam.Hitcam(); break; case GameLayer.PoisonAttack: damage = other.GetComponent().mass * 2f; script_cam.Hitcam(); break; case GameLayer.DeathAttack: damage = other.GetComponent().mass; script_cam.Hitcam(); break; case GameLayer.GeneralAttack: damage = script_cha.damage; break; case GameLayer.PierceAttack: damage = other.GetComponent().mass; hp -= (short)damage; break; case GameLayer.CrowdAttack: damage = 2f; break; case GameLayer.PushAttack: damage = script_cha.damage; break; case GameLayer.RiseupAttack2: damage = script_cha.damage * 0.4f; break; case GameLayer.BurnAttack: damage = script_cha.damage; break; case GameLayer.ColdAttack: damage = script_cha.damage; break; case GameLayer.ShockAttack: damage = script_cha.damage; break; case GameLayer.DarkAttack: damage = script_cha.damage; break; } //hpbar.gameObject.SetActive(true); hp -= (short)damage; //script_hpbar.Damaged(maxhp, hp, mytransform, 0.2f, -1); //GetComponent().Play(); if (hp <= 0 && life) { life = false; GetComponent().enabled = false; if (iscastle) { CastleBreak(); return; } //GameObject.FindWithTag("Respawn").GetComponent().TowerBreak(istower); if (mydestroy) { Transform transform = Object.Instantiate(mydestroy, mytransform.position, mytransform.rotation); transform.GetComponent()["destroy_tower"].speed = 0.3f; Object.Destroy(transform.gameObject, 3f); } Object.Destroy(hpbar.gameObject); Object.Destroy(gameObject); GameObject.FindWithTag("efs_mon").GetComponent().CreateBox(1, 1, transform.position); } } } }