Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Player.js
- var target : GameObject;
- function Update() {
- if (Input.GetKeyDown(KeyCode.Tab))
- SendMessage("TargetNext");
- }
- function LateUpdate() {
- if (target)
- Debug.DrawLine(transform.position, target.transform.position);
- }
- function SetTarget(newTarget : GameObject) {
- target = newTarget;
- }
- // Targetter.js
- var target : GameObject;
- var autoTarget : boolean = true;
- if (autoTarget) {
- TargetRandom();
- }
- function Update() {
- if (autoTarget && !(target /* && target.active */))
- TargetRandom();
- }
- function TargetRandom() {
- var targets = FindTargets();
- if (targets.Count > 0) {
- var next = Random.Range(0, targets.Count);
- SendMessage("SetTarget", targets[next], SendMessageOptions.DontRequireReceiver);
- }
- }
- function TargetNext() {
- var targets = FindTargets();
- if (targets.Count > 0) {
- targets.Sort(ByClosest);
- var next = (targets.IndexOf(target) + 1) % targets.Count;
- SendMessage("SetTarget", targets[next], SendMessageOptions.DontRequireReceiver);
- }
- }
- function FindTargets() {
- var targets = System.Collections.Generic.List.<GameObject>(4);
- targets.AddRange(GameObject.FindGameObjectsWithTag("Enemy"));
- targets.AddRange(GameObject.FindGameObjectsWithTag("Player"));
- targets.Remove(gameObject);
- return targets;
- }
- function ByClosest(a : GameObject, b : GameObject) : int {
- var distA = Vector3.Distance(transform.position, a.transform.position);
- var distB = Vector3.Distance(transform.position, b.transform.position);
- return distA.CompareTo(distB);
- }
- function SetTarget(newTarget : GameObject) {
- target = newTarget;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement