201 lines
5.1 KiB
C#
201 lines
5.1 KiB
C#
![]() |
// ***********************************************************************
|
|||
|
// Assembly : Game
|
|||
|
// Author : Kimch
|
|||
|
// Created : 2020-09-02
|
|||
|
// Description :
|
|||
|
// Last Modified By :
|
|||
|
// Last Modified On :
|
|||
|
// ***********************************************************************
|
|||
|
// <copyright file= "Tower_base" company="Kimch"></copyright>
|
|||
|
// <summary></summary>
|
|||
|
// ***********************************************************************
|
|||
|
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<Monster_efs>().CreatHpbar(new Vector2(0.1f, 0.02f), true, false);
|
|||
|
//hpbar.parent = mytransform;
|
|||
|
//script_hpbar = hpbar.GetComponent<Hp_bar_fixed>();
|
|||
|
script_cha = GameObject.FindWithTag("Player").transform.gameObject.GetComponent<EntityMainPlayer>();
|
|||
|
script_cam = Camera.main.GetComponent<GameCamera>();
|
|||
|
//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<Collider>().enabled = false;
|
|||
|
Object.Destroy(hpbar.gameObject);
|
|||
|
Object.Destroy(mytransform.GetChild(0).gameObject);
|
|||
|
if (iscastle)
|
|||
|
{
|
|||
|
//GameObject.FindWithTag("ui").GetComponent<UI_Ingame>().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<AudioSource>().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<Rigidbody>().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<Rigidbody>().mass;
|
|||
|
script_cam.Hitcam();
|
|||
|
break;
|
|||
|
case GameLayer.PoisonAttack:
|
|||
|
damage = other.GetComponent<Rigidbody>().mass * 2f;
|
|||
|
script_cam.Hitcam();
|
|||
|
break;
|
|||
|
case GameLayer.DeathAttack:
|
|||
|
damage = other.GetComponent<Rigidbody>().mass;
|
|||
|
script_cam.Hitcam();
|
|||
|
break;
|
|||
|
case GameLayer.GeneralAttack:
|
|||
|
damage = script_cha.damage;
|
|||
|
break;
|
|||
|
case GameLayer.PierceAttack:
|
|||
|
damage = other.GetComponent<Rigidbody>().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<AudioSource>().Play();
|
|||
|
if (hp <= 0 && life)
|
|||
|
{
|
|||
|
life = false;
|
|||
|
GetComponent<Collider>().enabled = false;
|
|||
|
if (iscastle)
|
|||
|
{
|
|||
|
CastleBreak();
|
|||
|
return;
|
|||
|
}
|
|||
|
//GameObject.FindWithTag("Respawn").GetComponent<Spawn>().TowerBreak(istower);
|
|||
|
if (mydestroy)
|
|||
|
{
|
|||
|
Transform transform = Object.Instantiate(mydestroy, mytransform.position, mytransform.rotation);
|
|||
|
transform.GetComponent<Animation>()["destroy_tower"].speed = 0.3f;
|
|||
|
Object.Destroy(transform.gameObject, 3f);
|
|||
|
}
|
|||
|
Object.Destroy(hpbar.gameObject);
|
|||
|
Object.Destroy(gameObject);
|
|||
|
|
|||
|
GameObject.FindWithTag("efs_mon").GetComponent<EnemyHelper>().CreateBox(1, 1, transform.position);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|