-
Notifications
You must be signed in to change notification settings - Fork 0
/
GroundEnemy.cs
84 lines (68 loc) · 2.47 KB
/
GroundEnemy.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GroundEnemy : MonoBehaviour {
// Use this for initialization
public Robot.RobotType RT;
public Transform EnemyTarget;
public float AllHP;
public float HP;
Animator m_animator;
public bool hasTransformation = false;
bool haddead = false;
[SerializeField]public float TransformationArea=10;
void Start () {
NotificationCenter.DefaultCenter().AddObserver(this, "HitRobot");
AllHP = 500;
m_animator = GetComponent<Animator>();
EnemyTarget = GameObject.Find("SUNman").GetComponent<Transform>();
}
// Update is called once per frame
void Update () {
Transformation();
}
void HitRobot(Notification noti)
{
PlayerBulletManager.Bullets b = (PlayerBulletManager.Bullets)noti.data;
if (b.Target.transform.parent.name.Equals(gameObject.name))
{
HP = HP - b.harmful;
NotificationCenter.DefaultCenter().PostNotification(this, "HitEnemyP", b.EndPosition);
// Vector3 direction = transform.position - EnemyTarget.transform.position;
// m_rigid.velocity = direction.normalized;
if (HP <= 0 && !haddead)
{
NotificationCenter.DefaultCenter().PostNotification(this, "RobotDead");
NotificationCenter.DefaultCenter().PostNotification(this, "DeadEnemyP", b.Target.transform.position);
GetComponentInChildren<SphereCollider>().enabled = false;
DestroyObject(gameObject, 2);
haddead = true;
}
}
}
void Transformation()
{
if (!hasTransformation && Vector3.Distance(transform.position, EnemyTarget.transform.position) < TransformationArea)
{
m_animator.SetBool("Transformation",true);
}
if (m_animator.GetCurrentAnimatorStateInfo(0).IsName("Idle"))
{
hasTransformation = true;
}
}
private void OnDestroy()
{
FortuneManager.Fortune_base fb = new FortuneManager.Fortune_base();
fb.S = transform.position;
if (RT == Robot.RobotType.FlyingSlow || RT == Robot.RobotType.GroundSlow)
{
fb.Rescue = 10;
}
else
{
fb.AddAttack = 0.05f;
}
NotificationCenter.DefaultCenter().PostNotification(this, "InstantiateFortune", fb);
}
}