diff --git a/Assets/Scenes/jp.unity b/Assets/Scenes/jp.unity index 57c5bd1..042ec3c 100644 Binary files a/Assets/Scenes/jp.unity and b/Assets/Scenes/jp.unity differ diff --git a/Assets/Scripts/AutoTarget.cs b/Assets/Scripts/AutoTarget.cs index d484f15..d2920a6 100644 --- a/Assets/Scripts/AutoTarget.cs +++ b/Assets/Scripts/AutoTarget.cs @@ -25,22 +25,28 @@ public class AutoTarget : MonoBehaviour { } public Transform GetTarget(Vector3 lookingAngle) { - Transform closest = null; float minAngle = minAngleRange; + Debug.Log("looking direction:" + lookingAngle); + + foreach (Transform t in targets) { Vector3 targetDirection = t.transform.position - transform.position; + + 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; + Debug.Log("look angle:" + lookAngle); - float dot = Vector3.Dot(targetDirection, lookingAngle); - float angle = Mathf.Acos(dot) * Mathf.Rad2Deg; - if (angle < minAngle) { - minAngle = angle; + if (Mathf.Abs(lookAngle - realAngle) < minAngle) { + minAngle = lookAngle; closest = t; } } - + return closest; } diff --git a/Assets/Scripts/ChildController.cs b/Assets/Scripts/ChildController.cs index fca1baa..991eae0 100644 --- a/Assets/Scripts/ChildController.cs +++ b/Assets/Scripts/ChildController.cs @@ -75,9 +75,19 @@ public class ChildController : MonoBehaviour } if (xLookingValue != 0 || zLookingValue != 0) { - //transform.rotation = new Quaternion(0, 1, 0, Mathf.Atan2(zLookingValue, xLookingValue)); - transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Atan2(xLookingValue, zLookingValue) * Mathf.Rad2Deg, transform.eulerAngles.z); - _child.target = _autoTarget.GetTarget(new Vector3(xLookingValue, 0, zLookingValue)); + Transform target = _autoTarget.GetTarget(new Vector3(xLookingValue, 0, zLookingValue)); + + _child.target = target; + if (_child.target != null) { + transform.LookAt(_child.target); + } + else { + transform.eulerAngles = new Vector3( + transform.eulerAngles.x, + Mathf.Atan2(xLookingValue, zLookingValue) * Mathf.Rad2Deg, + transform.eulerAngles.z); + } + } }