Fixed the auto target scripts

Signed-off-by: RosimInc <rosim_inc@hotmail.com>
This commit is contained in:
RosimInc 2015-08-22 21:13:15 -04:00
parent 2b47de9dba
commit f470b653be
4 changed files with 34 additions and 22 deletions

Binary file not shown.

Binary file not shown.

View File

@ -2,25 +2,28 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
public class AutoTarget : MonoBehaviour { public class AutoTarget : MonoBehaviour
{
private List<Transform> targets; private List<Transform> targets;
public float minAngleRange = 60f; public float minAngleRange = 60f;
// Use this for initialization // Use this for initialization
void Start () { void Start ()
{
targets = new List<Transform>(); targets = new List<Transform>();
GameObject[] gos = GameObject.FindGameObjectsWithTag("Player"); GameObject[] gos = GameObject.FindGameObjectsWithTag("Player");
foreach (GameObject go in gos) { foreach (GameObject go in gos)
if( !go.Equals(gameObject) ){ {
if(!go.Equals(gameObject))
{
targets.Add(go.transform); targets.Add(go.transform);
} }
} }
} }
// Update is called once per frame // Update is called once per frame
void Update () { void Update ()
{
} }
@ -42,8 +45,8 @@ public class AutoTarget : MonoBehaviour {
return GetTarget(movement); return GetTarget(movement);
} }
public Transform GetTarget(Vector3 lookingAngle) { public Transform GetTarget(Vector3 lookingAngle)
{
Transform closest = null; Transform closest = null;
float minAngle = minAngleRange; float minAngle = minAngleRange;
@ -51,28 +54,37 @@ public class AutoTarget : MonoBehaviour {
Debug.DrawRay(transform.position, lookingAngle * 2); Debug.DrawRay(transform.position, lookingAngle * 2);
foreach (Transform t in targets) { foreach (Transform t in targets)
{
Vector3 targetDirection = t.transform.position - transform.position; Vector3 targetDirection = t.transform.position - transform.position;
float realAngle = Mathf.Atan2(targetDirection.z, targetDirection.x) * Mathf.Rad2Deg; float realAngle = Mathf.Atan2(targetDirection.z, targetDirection.x) * Mathf.Rad2Deg;
//Debug.Log("real angle:" + realAngle);
float lookAngle = Mathf.Atan2(lookingAngle.z, lookingAngle.x) * Mathf.Rad2Deg; float lookAngle = Mathf.Atan2(lookingAngle.z, lookingAngle.x) * Mathf.Rad2Deg;
Debug.Log("look angle:" + lookAngle); //Debug.Log("look angle:" + lookAngle);
float angle = (lookAngle - realAngle + 5*360) % 360; float angle = (lookAngle - realAngle + 5*360) % 360;
if (angle > 180)
angle -= 360;
//float angle = lookAngle - realAngle; //float angle = lookAngle - realAngle;
if (Mathf.Abs(angle) < minAngle) { if (Input.GetKeyDown(KeyCode.D))
minAngle = lookAngle; Debug.Log("Angle: " + angle + "Looking - " + lookAngle + "\nReal - " + realAngle);
//Debug.Log("real angle:" + realAngle);
if (Mathf.Abs(angle) < minAngle)
{
minAngle = angle;
closest = t; closest = t;
Debug.DrawRay(transform.position, t.transform.position - transform.position, Color.blue);
} }
} }
if (closest != null)
{
Debug.DrawRay(transform.position, closest.transform.position - transform.position, Color.blue);
}
return closest; return closest;
} }
} }