From ef8624740ce1be70307ac73920ace1626f6cb2ce Mon Sep 17 00:00:00 2001 From: jparent Date: Sat, 22 Aug 2015 04:52:54 -0400 Subject: [PATCH] add auto target and locking with a player --- Assets/Scenes/jp.unity | Bin 19836 -> 23568 bytes Assets/Scripts/AutoTarget.cs | 52 ++++++++++++++++++++++++++++++ Assets/Scripts/AutoTarget.cs.meta | 12 +++++++ Assets/Scripts/Child.cs | 10 ++++-- Assets/Scripts/ChildController.cs | 31 ++++++++++++++++++ 5 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 Assets/Scripts/AutoTarget.cs create mode 100644 Assets/Scripts/AutoTarget.cs.meta diff --git a/Assets/Scenes/jp.unity b/Assets/Scenes/jp.unity index d987175411c5caad935d3f235e12296ccd3cedb2..57c5bd11674c559c22c03d9408516f159e6c297b 100644 GIT binary patch delta 5615 zcmeHLdu&rx7(ch`9^jNAY(vL$P8^0^?)qAbb9QWFi~y^MN+L?icDGg6cD4nXkF-R= z8KZ(16G38zCKw_jWJZQh{xCfJLji;F6@$jdFqq&YYK&UH-#NFJ+p?}`;(wmx_TKZo z&hMP_`@VCwKekJohb0eV%|{qpRl*pXK;Nh7&75+rZ0o9Je&%zQg#e!25lHtkY6LZivPz&Tj4usc}4D%AmMI3DSLXsgqN1ovJ<_(W0vCb|CI+^$Tj(1MK%jAuC!ot`{RH$b>I3L_$oW%{2J{k>+zb>x5{rvKi)hdY z2{6E=P$VEPFe6P~2DumV!Ze_iJNm$d>_!3!pa24T2tfG^@o6X?e}8K<~^ zITT(f3bjFNc|1KFk}(wy^WI2(%%Rkfr_Y-r>-GgaLsA=5ZpbY>BcGx^rVVzB_<3U5 zgqJTkQc@_=H|R=}9DvLzngWVcNHJ!rVV|D{h^H*qNo*6v*-hV=SRB0G*W9Ug#FndFD#hziX~^YjFuYFfYzhba z!XX+XN;01xqX~r6ZHtOeE-r|%*)#?1VEq&Evd*(e4$d&_7t(5Di4rlU`NyuLP&KJX+woHpamK#rVW$fV`KxmPS)*S*XaFs4uiz?RSAkI;4Nx*o0OhKl%cvS=nP&Zr27O%wdgGoM6k3e}0s1^PzUDWuC> zpz_D68{oHo6u%j|ZgaXHB?z^{s@044N2Hvav9de=_-Yk&Ma1V!FuQf#Owwh7soC?v z?eOa%-2?PC?})7HMv7_tK~nbeN3730T{%EStdr#6idEl*%S+x5P?wz}9g^N0bds(c zpdvRwIuwa=-EXq4E1^OMpkDsac$j~wu3SmV%*`s(b(=|-31-E)Ex^rwBi%s8s@-R) z>4Ppo1u;`M*i*J1x*{rj5u#Yw`{U!VPO&l`#M*UEQ2a(3JM16t7gQ2mF& zvhC{vM;E^N-L1txyt`{N`BA%Zq;=zz+HbvkEIm*D-2A{hLfRhM{qTX>2N%6s>ABSVXmX?Ho?^lfgr{QJq67LC<7Wsgg7xEv0*TBGnNf{+N7E6BZMgL+V_ z$WF!Xa42*cG`B4N%fm5VH~A#MAI0nhLgaD;`U@R%`vGuHKg?fWZUgB(x+5{+Ta>Bg4x)(=KK%rQ-cUlEBxIz#Ug=Fw>G0`S`qYv-M{8*8x~X#^|pK_ zP2ITb@rJ8+t$M3(?}OJz3&S_8dZN<1ecKstSJ&Y~+K%R_+F)Ci*4t7%w6FD?Bo%5q z+uASSF>;af7`2mlTy=p3Y8Hkl^0InS-N{nByHPUfd~Z!_8GUi?d0%rH+bO zqH7#0UcH|>gK#dPrOqpSgNlSJq*4aX(b^WbT5-~8y-g4Ck0)Epw3AC@Aw0fB(M~s7 zMW=pgJ^iV8qOts<>$V`1BD)pNNQ`c@EMzk3{urEyk47fL(O_|%T<1m_+0yeU%fJRV zva>ivVq&xDq%s`GKs*{?!|$SMHLaUbs_9R4el-4D7LQd%v(#$4xm34f6S0hA)oMG8 zOwG*nF>CdS#wq`hV6@SS$76FlO~d6bw_|KqZi1oC+GMB8VYeyvjH&)lu=IqxsLO!u z9}{e>L2?odMG#c4+CKKplUFd==8t^{tI9_4m;~AR41lHHM|bhEMhW^b)>#!yvdN>Rt9XH>Lzd delta 1964 zcmZuxZA_b06h609L0}Gq@?jagBOsWvLML-0SwhRlTt~?$Yi3AhR$@zO?3hEh0WN7{ zwv3n=Cx;)pXfpm7jp&L^98QgpXw+X~{GlOn*;w|&WRV3)oY7d%x$nKKtK8)D-upb~ zp7Y-GoZE}@;-5>R4Z!^eK<^m<*b3k&q8WBMUCy0DF8DW{PKy!(Xii72Ty=anwtlnn z)_b?RZvA*+t}S6nS#oz(Zu5{wa;b5pq(w_4XEC`&)RuSX$ECN@u)eg=7U}kOv^Z0@nc&wY0U8F((x6%z=c% zbb~D$xBwsd2e7rq5x-3yL1Ornyj`9lBhHXVgfNa+Oa>WvRN;?h;V&qhYhwBf;P}UA z%kfJYhX>-jWdd6kp%av4;W|ON!aI(S;a4?BOAbXR!Y~HoFagJoc7{h@4v(guHhwF5 z@;o{I^7C2;-WXnwzBX{@()ykgoa_}ciwpv=n{K)f2On(^Tcr;5QU|BhpR;GREK)PH`BpMILY!q9iGMMoz3y*)hSa0R@JOsjBu`<)F7jFCzZd{AOk+_0BDefL|U4-)s9i^Gar^^leRKQIleL!>OC9W#&E^$r7 z`K6g3Gryc`9yIV*w_Wt%UvB%h#6tkDlM|PJTnm2bu~)xE-E;pk{Mi6IW`BB)=Nox=t>f`{@DYH^wB@de zsRYf+1@dJPAE=?twS(Uj3={Vz&6%|*Qyl-%WD8oZxJlx;_HJqE-LexZ6uCrX_KhkP zmq$GvqC-??GQ8edYokg6RG+H)^F;M&?-vzAIlhal18D0yTl{w9;P*d3!NKIaBgu2$ zTwAl?Ot+C*>lzWb;H!#1tm5!_-7(xnJal(?%q{3nT@r?lW6nA*&&DEv`n;gm zNX_@$6*$>b$BA&Mw~>pR3i(4~>OdXd=`ZZo;_2dQq1`Hl?h0MpjSeE7)urN%gmK3I z3}>+G-lMMvz5>teWfT~suWjmp6)*S#R(8WxZv{35n#|3SK&!c!4(zqkKMMQ@z?pJH diff --git a/Assets/Scripts/AutoTarget.cs b/Assets/Scripts/AutoTarget.cs new file mode 100644 index 0000000..13da159 --- /dev/null +++ b/Assets/Scripts/AutoTarget.cs @@ -0,0 +1,52 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +public class AutoTarget : MonoBehaviour { + + private List targets; + public float minAngleRange = 60f; + + // Use this for initialization + void Start () { + targets = new List(); + GameObject[] gos = GameObject.FindGameObjectsWithTag("Player"); + foreach (GameObject go in gos) { + if( !go.Equals(gameObject) ){ + targets.Add(go.transform); + } + } + + } + + // Update is called once per frame + void Update () { + + } + + public Transform GetTarget(Vector3 lookingAngle) { + + Transform closest = null; + float minAngle = minAngleRange; + + foreach (Transform t in targets) { + Vector3 targetDirection = t.transform.position - transform.position; + + float dot = Vector3.Dot(targetDirection, lookingAngle); + float angle = Mathf.Acos(dot) * Mathf.Rad2Deg; + + if (angle < minAngle) { + minAngle = angle; + closest = t; + } + Debug.Log("angle: " + angle); + + + } + + Debug.Log("min angle:" + minAngle); + + return closest; + } + +} diff --git a/Assets/Scripts/AutoTarget.cs.meta b/Assets/Scripts/AutoTarget.cs.meta new file mode 100644 index 0000000..1c86e6a --- /dev/null +++ b/Assets/Scripts/AutoTarget.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 567fe96dcacb08f4ab716a98ce99fc88 +timeCreated: 1440221488 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Child.cs b/Assets/Scripts/Child.cs index 9342307..9f92da9 100644 --- a/Assets/Scripts/Child.cs +++ b/Assets/Scripts/Child.cs @@ -13,6 +13,7 @@ public class Child : MonoBehaviour private float _xValue; private float _zValue; public Pillow pillow; + public Transform target; void Awake() @@ -23,8 +24,13 @@ public class Child : MonoBehaviour void Update() { _isGrounded = IsGrounded(); + + // look at the target + if (target != null) { + transform.LookAt(target); + } - Debug.Log(_isGrounded); + //Debug.Log(_isGrounded); } @@ -36,7 +42,7 @@ public class Child : MonoBehaviour // TODO: place the pillow correctly or animate or something... - Debug.Log(_isGrounded); + //Debug.Log(_isGrounded); } } diff --git a/Assets/Scripts/ChildController.cs b/Assets/Scripts/ChildController.cs index 54826bf..e555200 100644 --- a/Assets/Scripts/ChildController.cs +++ b/Assets/Scripts/ChildController.cs @@ -3,6 +3,7 @@ using System.Collections; using InputHandler; [RequireComponent(typeof(Child))] +[RequireComponent(typeof(AutoTarget))] public class ChildController : MonoBehaviour { public enum Player { One, Two, Three, Four } @@ -10,6 +11,7 @@ public class ChildController : MonoBehaviour public Player PlayerNumber; private Child _child; + private AutoTarget _autoTarget; void Awake() { @@ -18,12 +20,15 @@ public class ChildController : MonoBehaviour InputManager.Instance.AddCallback((int)PlayerNumber, HandlePlayerButtons); _child = GetComponent(); + _autoTarget = GetComponent(); } private void HandlePlayerAxis(MappedInput input) { if (this == null) return; + // movement + float xValue = 0f; if (input.Ranges.ContainsKey("MoveLeft")) @@ -47,6 +52,32 @@ public class ChildController : MonoBehaviour } _child.Move(xValue, zValue); + + // targeting + + float xLookingValue = 0f; + + if (input.Ranges.ContainsKey("LookLeft")) { + xLookingValue = -input.Ranges["LookLeft"]; + } + else if (input.Ranges.ContainsKey("LookRight")) { + xLookingValue = input.Ranges["LookRight"]; + } + + float zLookingValue = 0f; + + if (input.Ranges.ContainsKey("LookForward")) { + zLookingValue = input.Ranges["LookForward"]; + } + else if (input.Ranges.ContainsKey("LookBackward")) { + zLookingValue = -input.Ranges["LookBackward"]; + } + + 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)); + } } private void HandlePlayerButtons(MappedInput input)