-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEnemyShot.js
113 lines (93 loc) · 3.04 KB
/
EnemyShot.js
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
#pragma strict
var projectile : GameObject;
var startedShooting : boolean = false;
var timeBetweenShots : float = 2.0;
var inaccuracy : float = .2;
var aimAtPlayer : boolean = true;
static var waypointZ : float;
var useStrafeWaypoint : boolean = false;
var BrainObj : GameObject;
private var Brain : EnemyBrain;
var PartDamage : int = 1;
var isBeingHit : boolean = false;
function Start () {
Brain = BrainObj.GetComponent(EnemyBrain);
}
function OnTriggerEnter (other : Collider) {
if (other.gameObject.tag == "Player" && startedShooting == false && Brain.alive) {
startedShooting = true;
InvokeRepeating("LaunchProjectile", 0.1, timeBetweenShots);
}
}
function OnTriggerStay (other : Collider) {
if (startedShooting == false) {
if (other.gameObject.tag == "Player" && Brain.alive) {
startedShooting = true;
InvokeRepeating("LaunchProjectile", 0.1, timeBetweenShots);
}
}
}
function OnTriggerExit (other : Collider) {
if (other.gameObject.tag == "Player" && startedShooting == true) {
StopLaunchingProjectile(false);
}
}
function OnBecameInvisible () {
if (startedShooting == true) {
StopLaunchingProjectile(true);
}
//Brain.Die();
}
// function OnBecameVisible () {
// if (startedShooting == false && Brain.alive) {
// startedShooting = true;
// InvokeRepeating("LaunchProjectile", 0.1, timeBetweenShots);
// }
// }
function StopLaunchingProjectile (dead : boolean) {
startedShooting = false;
CancelInvoke("LaunchProjectile");
// if (dead) {Brain.Die();}
}
function LaunchProjectile () {
if (aimAtPlayer) {
var tempForward = (transform.position - PlayerLocation.predictivePos).normalized;
}
else {tempForward = transform.right;}
if (useStrafeWaypoint) {
waypointZ = PlayerLocation.pos.z;
}
//Debug.Log(tempForward);
var shotDirection : Vector3 = tempForward + Random.insideUnitSphere * inaccuracy;
var angle = Quaternion.FromToRotation (Vector3.up, shotDirection);
if (Brain.alive) {
//var instance : GameObject = Instantiate(projectile, transform.position, angle);
var instance : GameObject = PoolManager.Spawn(projectile.name);
//Debug.Log("Launched!");
//Debug.Log(shotDirection);
instance.GetComponent.<Rigidbody>().isKinematic = true;
instance.transform.position = transform.position;
instance.transform.rotation = angle;
instance.transform.parent = transform;
instance.transform.localPosition = Vector3(0,0,0);
//to detach from parent, once positioned
instance.transform.parent = null;
instance.GetComponent.<Rigidbody>().isKinematic = false;
//instance.rigidbody.velocity = randRot;
//instance.rigidbody.velocity = PlayerLocation.pos;
if (instance.GetComponent.<Rigidbody>()) {instance.GetComponent.<Rigidbody>().velocity = shotDirection;}
}
}
// function OnCollisionEnter (hit : Collision) {
// if (hit.gameObject.tag == "Projectile") {
// if (Brain.alive == true) {HitBurst();}
// DamageToBrain(PartDamage);
// Destroy(hit.gameObject);
// }
// }
// function HitBurst() {
// BodyColor.FlashColors(0.5);
// }
// function DamageToBrain(damage : int) {
// Brain.ReceiveDamage(damage);
// }