From e76e32efe762a0e55b2129e7df85cd49063db41b Mon Sep 17 00:00:00 2001 From: Patrice Vignola Date: Sat, 22 Aug 2015 09:40:30 -0400 Subject: [PATCH] Restrict the bed usage to only one child per bed --- Assets/Prefabs/Bed.prefab | Bin 0 -> 5060 bytes Assets/Prefabs/Bed.prefab.meta | 8 ++++++ Assets/Scenes/PatScene.unity | Bin 31160 -> 32460 bytes Assets/Scripts/Bed.cs | 22 ++++++++++++++++ Assets/Scripts/Bed.cs.meta | 12 +++++++++ Assets/Scripts/Child.cs | 46 ++++++++++++++++++++++++++++----- 6 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 Assets/Prefabs/Bed.prefab create mode 100644 Assets/Prefabs/Bed.prefab.meta create mode 100644 Assets/Scripts/Bed.cs create mode 100644 Assets/Scripts/Bed.cs.meta diff --git a/Assets/Prefabs/Bed.prefab b/Assets/Prefabs/Bed.prefab new file mode 100644 index 0000000000000000000000000000000000000000..7d8eeadae209d9b13b989258edb136212cc32f2e GIT binary patch literal 5060 zcmd^DU2IfE7@ga8TYi+vKMF!oG(=(}g4!s;mj9+dl(v8&V!3qhZf|LOaras%hPXax zd@)4Sm|#M{2Mm#jF;NK*hzW^lq689oF$N6=BSti06cZBaIrH7wox2q6tMQWQojLQ} zGc(_u@0(eans`O2$)}Z4)k;me18?<6?ZVoJ(+ky&;o)H?0RZpeZyNXR@BDuH$LZHD zw7hfu&*O=<#=YKw=WlGo59d7+Po;(1JXHnU zQH#Md5bBB8$Wbo+@GRxZwJn& z)DIIhCb&H=cCWy*7X0slhyLe|I(cpHEQCK|46t3ea=KWvR;Cc9%@x;BdG#K-7 zQG;2L+XGU6fIZiJ%1ax(V)TS!G0XZrY@;L!4t7qqy`OMszJde))&K$ z{5q@P?ckrSO=?i(iO030HJH3vJ4Fq~wW&1-D#O17b^47O9Eo3RFnKe-(I7QzYoEDI zH0!97@XuPb>7P4M_>{)zT^bYI_Rq`$F8*1EHvKcJ1phtC4R-@qDyi4igq1uK+0BmL zqm7lm&J{u5j-cP`4-r63?x2^&yTi@2hgrWrgL*?((2rM(JJ9Uqx{XCcuD&bu2RuE= zD>E{m|9W8M`A4^(n%uG{@$EgB#GYs(Ap{c(HjV%P68 zrf_Wh@d(!m-?FEOY0qG@?UzP46TaY%x&;3x(ImGHHjBrMtAowL&A1FUo8OGfV6*vK z(Ih{E&9*oEI@m_wXRz7!hM&P^_?hgspvj<_=Cf#XALnXZsnG{*Q_$u1 zwgsUZ;tW)~)S%j}b~1p8w+1<1<59aEn1{|4-F|N>>oJ;FCJ5cFrH}a z69@kD&CT$X-rNk&Xm4(YXDr68w>Hl36i-du0AbUB!u9dgdn5W^_fo$Q1Uk9><8-5+gz?TQRRs_AhK6N%)k!!ow?!lbj)$E2|)^~e(*)w%i z8*&|4Kav zTG4rJAG_CSMQdDAm${phOL!{OM$~z)BM%iV^Gv8gtd~2(c~a40U#U}(ndf*5x97=k z#6F?#X<4+%uN9qVUuA5bRJ4;MUZwfXJd3|Ys$%yjD%$3M0d4YA(K7!yfAJm|=P%v^ z#;in&7LYr&SzeRLk+z(W=@sI5XDq3*auQ$==Jees4FOT_wN0Z?3{o>JNaL$MO z#rYKPfpV`l`@*A1>=XJ(G5X=rB)DYCBWRPy+yhN!GCXoL@f$gs3{Q>4!{4~aBc8bh zTz+#K9_n4jjq}`Fz$KFnMeTWfCvn7Oy|lZnIY{|wze`Rp#B{vbk#+lX=^)$J>f*HG zy|nZfUi_0BSc4s2HXMu*g>E+Eg=$CC#~+7k!0mm`Q^B?#uPbcx(jNG`cr> zKsUveX;L8dvT6%x!-0k86jgo}2v??D5o|9h&j z4cEiRtdnctW7cNoY}Uin#P61SDV+*8^oK68xj2F!T936H3oWjnpzZsjQGVIbz_jGi zS(}%>`c})Q>GTiF(1()ed&Gxhl|E*j#LYN#(y5(ah^hXFoTdoOzoX?dc6^&XE3%Bt MWA~f7nIC!n2KWio`Tzg` literal 0 HcmV?d00001 diff --git a/Assets/Prefabs/Bed.prefab.meta b/Assets/Prefabs/Bed.prefab.meta new file mode 100644 index 0000000..fcac3b4 --- /dev/null +++ b/Assets/Prefabs/Bed.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f2c38d0d3154bc4d8148a949b98af28 +timeCreated: 1440250095 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/PatScene.unity b/Assets/Scenes/PatScene.unity index dc1ee7a8f3146787ed78947e368bc190420e2d28..b1137493f9018b3f0a73b75d583ee4726230c617 100644 GIT binary patch delta 4118 zcmd5;eN0nV6u+-NDhSLHP)l2CL8E~4+1D1@GIc=QrUng&bd{9~inbV-h+l1VLbhdt zOe1>shx^FF60>3E7EH~?T(*!UTXd1dWHH%X=18_b+~OY?P3A{7cFyf9@Jg-B@W*c6 zz4zVoJNMjk&)0i{w}s1p3k8hTY+>xkWyaWCd~e5@l}NH=+bOeu#>U2k`R58YERIwx zJ+VYs4p%oEuMGC=7Ky7%V9cUn?2lR0$Hs_O|K)ES>qD9;4m++njVCZRlmgc`8azLy zFt!$#<-A9?YtNpZk4t9JGIly{`_8Y%Gf9#J^9#IKd@K`8=M2{s|{t<>5QGi zD*kr7~Qy0mR}>aQK}Es|f4Mo@)8kZFQ>&8=A*h>x5aK(|k~UKrkF)aY{I&rOEB!CbsQ60h?fy-`GA9D)2= zqtFhkaJ&IqYK?haM#dVE^8xn-h77hhj=H@xkHCrA?24am@AJ`$nK39PH0O#hKl?)i zK^6;RFX24d7m|YY!Jf^=&hq@JwtQ||-A>xwkJu!eaLK|)EI^ok@l@>G@7~>nbuYnS zz#}JzVWsv=2Vq@kf=M#7xlrgU+DG7MF@f;O=1L(0Zf!oLyZ7}gnX78fR~@V9U-x;> z{g>gbI$M@><&xg_;ZVhexyx#sUGLx3z_)cBkxI`I0Y<&zY|I_@{Vpy1e6S$TCfQ46 zE4ES+Ki;A&aG}v`pcs;DvV9!G7X{w6#S8-ht;yY)FR< zfkk;~xRl&Z8!@z9*>_`iImC{(bIDRD+Y+(lw*DOq+;PvL${h@z3q*!KZPY7oxF_ zkHaDS0^?5y{+z&-kVBbGKtCNsD-TC$p|DA?@qY!R#{MPr6zr3-e38j%=LJSqyJyBa8Z>|C*ib> l2lVGckr-d-5~23Ha8K>0Q9X&W{}OYsOaTZ7 z=?cAYkiqqv5A|$0)Y;k5)(#=-3t(JjN^R&k)=qjzFF8iK_HJoEc%=Ps@ZhS!)p6y7 zfb{ZNpXP%GmH@v*h!^ePf-*BhO=faz8kKh3S277>T8>rW?KafYz{vcbYwQ=gB_oLG zQSQf43Ew-bx`>5BNC;101^Dm^RtdhTW8mQL2v*^~f=T$|g|D}*9GF5#FPu?X5Jtn`xaOfsWa)$jvSt4f7Gsj zx0r;nFFEE&gR&a@z%+2xXnh*2qX>u0-}}`a%!(f|`83 zs)6OTTGglq*4JvY+?g0S)MCR#2?s66PxgbiRwrrT488~8vszu2QAdayPd;Xqft8ET zsnhEmbnS<`wW+=_{TD8}yOcFQjN=?LET7N(3dgz;Q!;{%I^*z*R0%Y#gW%U~f3E-}iNjMAz{DcwecBU@A{Hx;-f@A=za$16^ zotvda@Vxyz%-GZ6x_u2StLuV_`o!Rgx_2Z9cs04AK~~ah_=skTU4bk_+1%b{Fxv9q zfp;rjl=Y$!W1AuqZ(PGSJ~Z>hUk;&89aQYeG>b!2{YWk@r|UnsZn%B>%CO#5CO0)r zcs%#09tAJ@_ZfqRU852_JQ5FMjVbVFQ=b$M-sS>EQZz?FQZ&*il7(|5MH7xiGG82` z&P3Bhw8!nMzgahjC9j`_RcZQ}BMfGY8-AIt!BN=NJ|lC?U-Fx6XWK2e>58qmNj}V@{xlU*N-fP zQV}fJUB;M-t}mF12@%D#XpX6vE-{&kL)3dD(~}R5mn%~DRHh4qD|a`mSZRs&F8GO2 z5XH|j$4`urSo~yq2qrqybl)9KXSMYC-zUl=3m$oc-JS`ZEovzd-fqbO`|EPN$x>=I z!@ky3)QzF8yGPD6l@zU`PiaYHs0m4gCoOpy7MqzqrAlnmUK>>Gm%)9|%GQy+;Wfnf z2Dcs>ooa^J-DbA-xee&|6L(Q~=QR%Ql7k8R)T+S-8LagNmQFE9M7YGzi3(TgT)4!* ziWM%iI7Gi9GM(N{;eVpXqi7eFdJT4nBpB|nVwbqvv4L{S5pzXw6Elc%qf-D|8Es>F zF}GrIlIbCu!aR|}GauGoQKXRaoqg0`sm}@O4^+jmj2bl-lR2Ea=*&G^YI7je8ZTQ+ zHXEGlqV@1B8NJmM&M0P*ejC=vac}-?&k(~)ghvdzsMM9rrA`dVm|>!aSeOFZjEV4H zZ+ls+FsW#mSSg9QC-{gV8O5h~j*l3yG5OF#QGC81iWgn{sjVQ6rES>TCb6=&x->X3 ylY7eXUBljI*n6_a27b2;p&mV$JsS4AqSrdB3vk^?uO2pfF%8(L>G@mkr2heki6F25 diff --git a/Assets/Scripts/Bed.cs b/Assets/Scripts/Bed.cs new file mode 100644 index 0000000..a5598fd --- /dev/null +++ b/Assets/Scripts/Bed.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using System.Collections; + +public class Bed : MonoBehaviour +{ + private bool _isTaken; + + public bool IsTaken + { + get { return _isTaken; } + } + + public void Take() + { + _isTaken = true; + } + + public void Leave() + { + _isTaken = false; + } +} diff --git a/Assets/Scripts/Bed.cs.meta b/Assets/Scripts/Bed.cs.meta new file mode 100644 index 0000000..7aacc3c --- /dev/null +++ b/Assets/Scripts/Bed.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 49fab454291c16d4185f7f6a511de185 +timeCreated: 1440250042 +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 37f2284..a485243 100644 --- a/Assets/Scripts/Child.cs +++ b/Assets/Scripts/Child.cs @@ -6,6 +6,7 @@ public class Child : MonoBehaviour { public float Speed = 10f; public float JumpForce = 10f; + public float MaxInvulnerableTime = 2f; public GameObject GroundCheck; public Pillow pillow; public MomBehavior Mom; @@ -15,6 +16,8 @@ public class Child : MonoBehaviour private float _xValue; private float _zValue; private bool _isSleeping; + private float _invulnerableTime; + private Bed _currentBed; public Transform target; private int _index; @@ -108,11 +111,15 @@ public class Child : MonoBehaviour public bool Sleep() { - _isSleeping = IsOnBed(); + Bed bed = GetBed(); - // Temporary (only for visual cue until we get the animation) - if (_isSleeping) + if (bed != null && !bed.IsTaken) { + _currentBed = bed; + bed.Take(); + _isSleeping = true; + + // Temporary (only for visual cue until we get the animation) transform.localEulerAngles = new Vector3(90f, transform.localEulerAngles.y, transform.localEulerAngles.z); } @@ -123,23 +130,48 @@ public class Child : MonoBehaviour { _isSleeping = false; + _currentBed.Leave(); + + _currentBed = null; + // Temporary (only for visual cue until we get the animation) transform.localEulerAngles = new Vector3(0f, transform.localEulerAngles.y, transform.localEulerAngles.z); } - private bool IsOnBed() + private Bed GetBed() { Collider[] colliders = Physics.OverlapSphere(GroundCheck.transform.position, 0.149f, 1 << LayerMask.NameToLayer("Bed")); - return colliders.Length > 0; + return colliders.Length > 0 ? colliders[0].GetComponent() : null; + } + + void OnCollisionEnter(Collision collision) + { + if (collision.gameObject.tag == "Lava") + { + Debug.Log("Player " + _index + " entered lava. Lose one life."); + TakeLavaDamage(); + } } void OnCollisionStay(Collision collision) { if (collision.gameObject.tag == "Lava") { - // TODO: Lose a life (probably) and become immune for ~ 2 or 3 seconds - Debug.Log("Player " + _index + " is standing on lava."); + _invulnerableTime += Time.deltaTime; + + if (_invulnerableTime >= MaxInvulnerableTime) + { + Debug.Log("Player " + _index + " is still standing on lava. Lose one life."); + TakeLavaDamage(); + } } } + + private void TakeLavaDamage() + { + // TODO: Lose a life (probably) and become immune for ~ 2 or 3 seconds + + _invulnerableTime = 0f; + } }