-
Notifications
You must be signed in to change notification settings - Fork 0
/
Cangrejo.cs
127 lines (100 loc) · 2.87 KB
/
Cangrejo.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using UnityEngine;
using System.Collections;
public class Cangrejo : MonoBehaviour
{
public float velocidad;
public int vida;
public int behaveNumber;
public GameObject spike;
public Transform spikeSpwan;
private Animator anim;
private Transform espinaSpawn;
private float spikeRotationAngle;
private Color spriteColor;
// Use this for initialization
void Start()
{
anim = GetComponent<Animator>();
spriteColor = GetComponent<SpriteRenderer>().color;
}
void Update()
{
}
// Update is called once per frame
void FixedUpdate()
{
rigidbody2D.velocity = new Vector2(velocidad, rigidbody2D.velocity.y);
//Enviamos el valor de la velocidad al animador
anim.SetFloat("speed", rigidbody2D.velocity.x);
//Si la velocidad es negativa espejamos al cangrejo
if (velocidad < 0f)
{
transform.localScale = new Vector3(-1f, 1f, 1f);
}
else if (velocidad > 0f)
{
transform.localScale = new Vector3(1f, 1f, 1f);
}
else if (velocidad == 0)
{
anim.SetTrigger("Stop");
}
//Comportamientos segun behaveNumber.
if (behaveNumber == 1)
{
StartCoroutine("flash");
behaveNumber = 0;
}
//Destruimos al cangrejo si su vida llega a 0
if (vida == 0)
{
Destroy(gameObject);
}
}
//Metodo que es llamado una sola vez cuando un colider entra en la
//zona trigger del cangrejo.
void OnTriggerEnter2D(Collider2D bala)
{
if (bala.tag == "bullet")
{
bullet disparo = bala.GetComponent<bullet>();
disparo.hit = true;
vida = vida - 1;
behaveNumber = 1;
}
}
void OnBecameVisible()
{
behaveNumber = 2;
}
public void moveRight()
{
velocidad = 2f;
}
public void moveLeft()
{
velocidad = -2f;
}
public IEnumerator flash()
{
spriteColor.a = 0.78f;
spriteColor.b = 0f;
spriteColor.g = 0f;
GetComponent<SpriteRenderer>().color = spriteColor;
yield return new WaitForSeconds(0.1f);
spriteColor.a = 1f;
spriteColor.b = 1f;
spriteColor.g = 1f;
GetComponent<SpriteRenderer>().color = spriteColor;
StopCoroutine("flash");
}
//Metodo que calcula el angulo entre cangrejo y jugador.
public float calculaAngulo(GameObject obj)
{
GameObject jugador = GameObject.Find("Jugador");
GameObject objeto = obj;
float deltax = jugador.transform.position.x - objeto.transform.position.x;
float deltay = jugador.transform.position.y - objeto.transform.position.y;
return (Mathf.Atan2(deltay, deltax) * Mathf.Rad2Deg);
}
}