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); + } + } } diff --git a/Assets/Scripts/Pillow.cs b/Assets/Scripts/Pillow.cs index 61084a4..22c8f03 100644 --- a/Assets/Scripts/Pillow.cs +++ b/Assets/Scripts/Pillow.cs @@ -2,6 +2,8 @@ using System.Collections; public class Pillow : MonoBehaviour { + + public bool IsThrown = false; // Use this for initialization void Start () { @@ -10,7 +12,20 @@ public class Pillow : MonoBehaviour { // Update is called once per frame void Update () { - + if (transform.position.y < -10) { + Destroy(this.gameObject); + } } + void OnTriggerEnter(Collider other) { + if (IsThrown && other.tag == "Player") { + + Debug.Log("A child got hit by a pillow!"); + + //other.GetComponent().takeHit(); + + Destroy(this.gameObject); + } + } + }