From 5b76f72ca60cc9ab9558130f8c23af41f10d47da Mon Sep 17 00:00:00 2001 From: Sagi Dayan Date: Tue, 20 Oct 2020 22:33:58 -0400 Subject: [PATCH] Camera shake implementation + jump sfx --- assets/Audio/SFX/blup.wav | Bin 0 -> 95516 bytes assets/Audio/SFX/blup.wav.import | 21 +++++++++++ assets/Audio/SFX/player_jump.wav | Bin 0 -> 5290 bytes assets/Audio/SFX/player_jump.wav.import | 21 +++++++++++ src/Actors/Camera.gd | 48 ++++++++++++++++++++++++ src/Actors/Camera.tscn | 22 +++++++++++ src/Actors/Player.gd | 13 ++++++- src/Actors/Player.tscn | 15 ++------ src/GameWorld/AmbiantLighting.gd | 2 +- src/GameWorld/GameWorld.gd | 6 +-- src/GameWorld/PreGame.gd | 2 +- src/Singletons/AudioManager.gd | 2 +- src/Singletons/GameState.gd | 5 ++- 13 files changed, 137 insertions(+), 20 deletions(-) create mode 100644 assets/Audio/SFX/blup.wav create mode 100644 assets/Audio/SFX/blup.wav.import create mode 100644 assets/Audio/SFX/player_jump.wav create mode 100644 assets/Audio/SFX/player_jump.wav.import create mode 100644 src/Actors/Camera.gd create mode 100644 src/Actors/Camera.tscn diff --git a/assets/Audio/SFX/blup.wav b/assets/Audio/SFX/blup.wav new file mode 100644 index 0000000000000000000000000000000000000000..1977a6f1f7077ef46cc0efa0d8344f9bb8140fd1 GIT binary patch literal 95516 zcmeI2cW@NP+vmGyc4t>%ca>23M9$G96HNwVqD?j?N0WmM7@J@dOf<=4lfhsz z#^fY~0D(Y(APJ>a*f^o@yRv_8`QEy#y1Kf*u3As6wAz{N>Hc&-q5FAyb?VR|XgVeR z+w^Nc>Z@r{euNMTX?K{AR)aVkXg~IT=LelO5zDNg{7ZE-4^+ zB!|2w??^VuC#6IqM(R&PX(Ww;RG{T)7%fMG%cLCMN8n0@GKs|dzpn++KpOCm_~YAt z)I!bFm-|Ooo6x4T8ErvZ(pIz${fM@u?P&-4G3`V<)2_4|{e~ zKo`-)bSeFoE~6{xO8PxrMc2@^^e4KWZlFKY&2$UhMt`9@=q|d4{z~`J1N0z0Opnl` z^f*09Pth~_aeNJD{m-H2V zP19%w&7^PWTl$`6(QKMSb7>yUrvAElInjUDQr!`?RgvT5Xv& zSDUPj)&^<4w2!qGT0O107Nvz~CQa1bYLS|)rmN4?hw2UWlKQ)PRNb%cP&cVRso$&L zsteVx)oJPkb*wr<9jbn&_E&qWpQv5bkJa{STeXeaN^PMwQ=6(y)W&L~f21+~Yl=@> z;A$JSo!UX|q;^$%sD0D{>L7KvI!gUgoutlC=ctR+W$F*=I(3V>OFf_-SI?jLZfj4pG>qJ) zQRWL0l~_Eev|~L$XcS1z1+gF5HnxwQU>Dgfmc(AO99F_KW+VZmJgGuzlcuB{=|=jK zVPq_sO6HPp$SSfCcKrZ3LH;1u$Q|++mL>!C!U|iU5goKV0Qy{!R)*HrrH!GVZK0Fh zp@{>q7KYPN(7K6O9W&`1Iv-m04P6fXT2-c78|bDoz4B<)?lP^~53M=`z4{H}(XFHO zSeYD$mi;Y%|9=!$J@*{O-3RG@tjWFj{%*9h18Z{|THQo9LUY&AAEC#quufNCr7p!< zU5M2>2kUhP`ZSqNfJGP!+b{w>9g6;biq+eP_C)`?z_zr9ooPjz!}c_y^WkIlPW-u_q@(J)kDr}@lG|AOf0C=@ z61hOmku&5J=pH4%k%MGE`4#%GlWZqjp%oj+dh!!=V-@+HdA!$JBLEq|-1QJi;NKH~5x>to%CNZQEyn97b0qY}zgp*KGj)agPXk`GR z01Gh@U*ZD|H4+2SBNh-5CwP7|rZR=OnTt7@o!PL;idhjWWCbjb}R$C)?qDM&3<6tvE}R=wuCKY^Vu9Wo6TTTp$QY%muw7l z;tMv64Q2ybf7XZfWZhV2))D&Bnzex5G-P#I0;|cYvRD?y%Ck@w#QdOFMy7*>Q8b5E zq7^{f-f0O1w7nylVe|57igr_{shZgsQzqq+iiXr}rV zY|v+FPuQN8YJIh)8m*R7eN{nqD)~yL@?5#ETvg5}hm;-4I%S12Pnn{OQU)sBm5-E$ zN)07a@l$k)L;fJA$`9ph@@aX$yjlK1UMNqIN67u;kL9LvoE#}z;NXkgZ`@DZf4R@N z_ql&|uW*0u{?a|j-Ob(7o#2jg`@s0LQ>E{%k4o99N-I46LFDO@?C9v|;Amea9ULD!x;VN!dO7+z zK64CrjB!kK%)+-;IyO3XJB~RnIqo}NISS!8gYc}D&c4pCoZmQqasJ_a<}7svxazuk zqsNz4&KHvB}@(J@D?z_)7*Ehj5$#mRQXsT%*Y2Ic|GE0_5 zmQj`;E$1z-EN?6qEuUNNn{{T3N%48^ebQ^QakJrqBuQWEL-nb;Yk1~kUB1p&Urpak z-%j6JAFub^NAUfFc-9_qm-vggRs0!G|502melIQ;zY!OS^Tn^l8R8Uif;dhbDGnD0 ziT%Z1VmI+)v8~urY$DbZiLVVAH)SSS1-EW>=v7N!d0g;By#VSvy}=pwWeS_+MX+CmK>Mu-$b1V6z`5CsJ> zQ6ZwBH#C(#Mci`-G0!E$b0^?m_QIoVL9DZyeh2@t01@Lfc#W~}7(?JK`XKJ?3_sBt zv1vp2zgqAQvG9fw@C^a*4Bm)(1jIdVL_Wpv2_F#syg@Xc3V)CcU+VD&x5!`cte44o zau&YeBsumkPp|`?U<=tqHjs7XN3xpyKvt3!WEuSOl7D%ES%{pbktt=qU;-Im<_*Tc z8;mUT2gA!e!r(HWFtE%k^n+jMQ|1|ZlAiDmpOpEBuJ90DNar#y@iFNLPvP+u?GX{Q zgU9#?(x%LBw1)3!1!-C4L0Z6zH2+7M!Jl}f=|9qh{6`wY%lum!k^h(S@0R~>-v6)q z(hy$pKhgmH(IfT$k$Ui!9)IbPI%QHDu~R~s_lzgCAaP}0v<9hB=1HrOs_>>Be;Qln zQ9V92s?4iK{^M7};8{aR@V`8(`M*4?1kWmB*G&)yYh_;5<5NrFQ;W*{smGhXhcC@Q zg#3!VfEV@n&_`wd^A>#PHF(Yo>>Rx2NqEe|@Rz@`UGSA#*hcut)$Dut$ffX*bJ$FH z$BAqlJmYXShz(%9S$Eb69MVv;fF}%qAC%w)-SC0=+IuZsOM(Bp3-5Ok z*6|1;?q9T@wKed23$>ZrL`2;~w7yzbt)13Xs{?;mQ47|5H9>Q#1?pQh1yT2PM7>Ag z=YB>cya-Y8ICY5H3o&z3wU!#C2C9f6kL9cKae0TlTAnX|C4VM&mK)1ePNXvZkOwwE75h)bpT#$p=-QrfUB)50Uk_p6**ryZ^3*0;{47z!}+Stod?llf7i#ZMXvKMr>l{B zmis)m>mB7a@=LjzGE=#wM8KEbQlk-(q-c%VCML6?ut2pCEmL6v>}ePAf*7ycsSDAs z)CBAm<+P?R=O)4mo`fCr7=<;slC)hs)PIE@V)v{ zGpU`_P3kWVgO8mo&64Ix3#BE}QoI&P3#2*HOlhh#0oO)IL!?iozETgVi_}4CBQ=*A zNp;aiWvPM`BAF$>OhVXv@U7$d89l@?jv_ajMGwXB-cT-S5>YgSCAv*P&rr*l>KEtM1L094DtN+lLMeV zA##{pUaly|;O?4of?N+;)k1D7capoKwSn?5c{H?bnmk8dEU%E)%0EK`_shrR-{s5l zO+=c{Dw7D{{cxvw%9QR)O`hO$6ermR*rD!(ZEm1D|T zEdLVE|NjxsbrbIM!TnyE0pHajx)(Ih z#z;lGZq=naRGV6YrxhaN&&Bz}d-NegO;b~05uc%Fk6{<@qn|gi54fgY#$Mo@dPY5| z9>b2{07kS+{RLy&h?9dgu$n7yPO(^>kMo3?>Qrd>cy$bR3d3;LFaT_N;OyaJoIIEw+sG8yi=Mtqr`JlYVj^Z^|*fS+bd8pjQTwKSD zTvX0shj9|~^P6%Iws?=SQ`xR;g-zaoJ;z$i-}kW2%av~sJ1@eF&V!}?TA8iPg7ul9 zOjo8srk084-86hM16O9@jybq@0lu>Yt9iMyQdy<^sH{i3+wg>6@vNiDDdi9J;0AU% zPn4I+8zmP#l@*<8#x5utV`_-i&`teR9jQ)%p8Nnl2h_75_zbh_P`$9vio*#?FKwhY z8@ja{d$ot~U#b?2)1wa94Svnmvt#TY&PDX_)NK$sEyU@^Rm5z1oKAMZNyblz3tv;c z5GV8z<_Y@{@ykM0vA4KD{0;H5m##4^!$#dLol93!KSaM)e_ij?$4SGb4bnYHFf=ht zH0(3HHiQ_v8d!>4Xcz@!(-20lh+q$9DLxk84!(1IkNLjy z4KsBy%`+V}y*5eaD06jlq**roX_{#YH68R#@ICAk4x+KcGM*z!DZrv-`(qD87bc1!xbmer#;$7?z z=D>nhL3Dpl*d}}>G!u-%6P&t^!C9~!@$r1jh(N9(R%yYUIN2MAo%1twC3eDAtdJgx zCLhEemdFR)z2MV-akX=0J6AeuIUitWXmK31cem%;R@!RVZk3KI)tBxrXHTkf~H zQ*%e>4$mEyI|}c<&E1iEH8&?WH1CtVRe8yIvH5fIU*vyOaH61Q;ctbFtaq%VihPRC z6;CXQFSV8aW!q|>>loqe?dt6AD0fx*tE08~>}PV8rV662mVThL!f?*`!7JRSlkZH^ zPV+5GuAea=IIGc$ALeiIzw5W&?@PbVes%mJ{Y-wuugH>axobIr9p!jS3yZ;W)4aeO zZ+>E$VltZ6`hI`6bVJ2og&drKeMt_mcZlKo ztE-gjvddk|JV2!cwNy8Ym9YD;a>$63g+gg=XJ@uklP^l z^oJH7?&plmk#de@f011=`(4(ltRJ!_Wev*emDM|IaMqNpHCgAfaka^{*W;G2lQzdO#3Z&I&vb_#)6dsBzGUpjAPqgPsT3gUrEE!EwR0 z@rn*M1zUse25k!(9aKFiGjLsCtH8{F1py%e`~2(q|KZod@4Tg<<%qeGd7Vi#P4Z3k z>ELt3JJ@@USB9~J@u0zMm@Fmh8|$~~h;D><2Yb^E*e{MINvtJ1tVL)mVUedQIr10s zYn;Bkat(K7IVU+)$M=p3j+2N8-`kejs@U$9PA#oadcR~rN&S-i;seEFi{pxmi_RA< zE9zHNy-2e@v!1m6Xq{&L)Y`@xXAQUdSXrU1u%IxfFsm@TFt@O%&{Zf}{j3$Ob*$~I z1Fe&-E3Nyi*R5}@`l4z@-HN6aZ7aH2R8kaG+`V{y@v-7J#pO!6mMkebUs8%yJ+^dj z>6_9@w&Av&woF^BeU$xxJ>Oo(F~f1eAvilZ*Wkn@$~DGy+$Fo(yH~qkxGT$(4S5sJf(^H4ZK}NZ9MF;0cUYLv9D>0)6OJPk$#E10~NXnKVz?7OPq-l2X9>;-8S7j z=*o2cMZHeyEUlHEN)d)(hCPNXLk;72<8Q_SW4zZ_UWdH0y<)wGdT;iA;%)M2?=#ou zq)#^Hy_@fR-y^=Se7#K#O~XwqO(#t+OvGH(+|4}AyxDx!oMkpy>RS3)W?6o=oVGl& zWFZjp^$Ycj_N(Go)i1^`!p{$ylxIn{oU?4fUA-+eEXRary&u5U2+2^wN1n&s%8(x#V%6VNfes0to_Zm7F-Xda+kWTBn>EGyP>rA>G zVjc0C&{If9KE(|N{$wkw!j2*ayaEsYNEx7{A=WBz&v0w5Z(SDGMrXA15cUCA>|O0C zw$V0w>9W$W(!(WfN}d%@EcPzmThy-Topl*z{Yl~c!nnfJg4G4>3$*<6uu`pH+aBlb z%$t_iHLqHpF|Q!^S?-P8bGgTJkKlDK_h#lP${9j` z2z7^c5Bo0cNZ5t2Ghy4qriZl(Q$ml04hj`QcbEI9Tw2JSka8iXf_nxR2CWWC2znSe zDbO$QSU|UcZ2yJ+!T!Jc)%H7MX#o9;GJj{v_wDGr+2^fy74M;5YmDa%FQihvr1#SW ziT;9-x)F0fP>(BXC}?W#g!1Gr50Sy-h5G(i^0Inf^z5Ovb*94oJB^eRK0|@;mK) zyX-wVQMte8jVY*O4J`I44Y#*&PH~@8%xn^UCH9i;8$0{lG`05oEkGCCvRtpQ77_09 z%PM46^oiD0x>spb%#)a~*oLvSV~w#_V}`_}SL#yfm+03~-cd0XYgUMkl*+#d-yYT@ z)EcrNSPdK*uKsERErho7;gIzzkr~Ua$6!u#qyPMV!x=mta|U7f5pA7wKZNyFehA(kBzTW zE5GKz8gr`kuJSIXL3H~H;Sp!cRSp{AH`jNvv5U@++>z%x>Xq0E?tZxPJ~gv?+R2wo zp6^PINU}d__Rw~}+Wpjf!S|ovukw&R8j;lV>7OYlUIk}nzW2>rR8-SZs@xD(8=INW z1X@F1M2@Vqv`WnyJ!<79l+^j6UZeWs>(l!7y4~t{C)A63Q0-mp;;7>h3qlmX#y;)! z4OyhiQc@{@T$Y+qklOosizk;K<=nq{cl4da+dg+f?>g@N`Y=4H>$B>qTQXK=rRGm9 zZ6ND}8^*zwq0*H`LotUI7~$6AxBXT%<@SP=GmU}aNp z>2o&Gxw%Npz4O+TmYp&+`DUX1f#rUMd)4kG+^_R6_OUB@`wLfE;k#jZHA`x{JJG(z z+Lm*{4#>`r`5@PEtt&>%|d&0H2PpTU$)2Ke-Q9(;hyQQ6Mhx1lZ^W3O+ zKc$_1vHj`Dr0~Rh4;Mdd_Q;mF=SlPDhf<$r?8?f|Utc;y9w&73a#}iugqQCT{h;#P z>K)^v;#vIb_{+5p)ZAa~Zfy0am*HyAF>|o72VL%dRWdz)YL-1C;+69JNb*NXHxgSX zo=6N!`Z9UT^DU`;GLF3eKJQ`i02d_(rP`*6fgQs(SLhnkzUrhJm*ZmNH^o((CEnq(+YiCJs$(|5$pm>1lC_ z@cMM7J?l{Zxf0PmjwDKZ{p*|JPRJvHjTw_yQ@A&!&O%lF{KNHuy2B{ht^KFHR zVebR==J$rZ^b5Ixty$r!oQ`kjrnP-}=-FRSwmxo@xb4yXM>i6eB+1D!Dfy|LGpfFy znj2E&w2NxESk=p7ITvIKw^bM%Q@85K8aZ(%<1Z$NwZBPdAKy7{OZE0u`c--zSrob} z&}eRA>?#aYX4|h=JLE>aAD&VE)zFkCPfsVkOg#Ch<)itJrX&U@4NLCy{Lh!y(i*9{`y$dbPf}4h?R4~Mxs*+Uw)41mG(-Uaz*9pD}Yidobd92#d%FCmh zL@o-Q8W?TfZq$VS>IFyZVrQN$tMeN}TCz8bCMrb?52(RhpZGj6z&5@0x^J8PG-LH`uHz>YA!ngz_{zI*%aYfZb ztNtF7TJfidf)LsNp6?U`5x!F@I+BYn=4EG%dDA6r$IEHYA0=N&>il?WVynd85-&a; z_vFaa#VIdSkEG|n{Vr!(!RC?=&R*IjG1BWZ^QgeM&~4=pM750_R5iDHR?SYeeBx`w z@2j;W?rM#()fQF`tQ21%H7p^xp`Yk;K;Mi!a8I!{x3wu&t33qA$kItGcIp z^_o&#g`$YT zq0NK#T7LIlsc(l?-`aeOHs*zEUu!XiaH3XSV!;T@fc3{_tL4+GcV4ee2)MKhm$M z`GC(#qnExXU9alhN%m@`Rf@B%v#qbJrea6Q0{dduQ>8OGCO(yZ@H*-fVY*;iZd&4d z!Mm67OMOEjM>{8{Ilr^NDHTggOHP+Iuz%{5-5=Cq@>-lNtuZpMgWgNLS9@g`w&-&O zFH%?C;r`xP(J{sTqkWdc-xVTnR6inVLOs2gp`md*_P~CIHhPCJfxK6D$jPo_I2k?Y zyy;pjA69+I7s5oHTc3hmY+ET!S0tPy9^{W z5S1^X)7cW$CX4btcVBsh(pZZjMEFLWp*yOpf)?7*(QLokN7*GGmM1B<)j6yQ{arXJ zmLjt?K)6YQ*#>pJ(h6r7$JID?moyb>BHLvXUeM3TeQlYVh%>Gw>Lsl)*-F<7Il@w5 z0gWKXwQXt)>P=c}E7^PEqO*jy!f0BFJksvtWapT=Nqfo4p+YE5I7yF?No=5Y1E)vZ zv_Dx9xkDx4NBT3F%$91EQ7O`kO+oZkfXXB%LB<^wBonk)R-4qMr%~PX8oP~5?JI4k zHj<4bjgjZ7LOYT!Y`eAsCnFSfVuMlrFr6%BceG!%Xq0?CBP~(&)spmQf8fNwGpm8T zRuuh%v>wQv-a-Z029k*Ux^OyZ%6CUePA7 z%BWD;jdRqosQ+n&T*wc|tj#44SYuWZIgXB~x43}Z%{t`xH?USXd$l8n_7oY8FHnuJ z78M#hiHwX#0$anH;9T|yGBvYUIO~e%enWmI1IbbJstVi7dg1CSVrTtWB%8t_$X--1 zwIDyCPM|CDFH6Zyj39+|VGU4|&6#aZNo z=HaOmn3?QDZO9~Y1E;@@QQa^C`N3Prs;$P=fynf1L^a<=QjF(TMKwb_Do0X~=lg;yXM%}lHj@?-PSW-4-_ zyU^=U! zmMvnHFw*;|%SlEhNhESO-t3LKcDa zS*)2Ss2$pX)i?)h^AhWUc|DKk9mfcJVWvJM$59g$j+HzJnVVRwn)_H&rEDd7?_i6O zQ9c44*~Lbn4kip0L+g>X+>5^SXE(7*rsKcktUXT8cCaewbvN>yjYmsoSqtQrrxA(l z#A>p#Nm%o1k)OPRbsB{>{zQ*`p_wV{BWT$H(iLm`HxTcOyGD}2vO1eg)&`km4L$i3 zIYkGngNmSSs688nn!N~A3!TOIh9e6Zgql8Z#G1dtDxlgZ3;MYVy3+!q)Z-ak62$7c3ZOyjJ!A^+|D9X(bqW6+EFl$;Uj! zBWG(xM%5dC4dess`k6I-wp8SSgM-`KkrQ(?x$kC>QcLs8_ zPmzCp3;lh9apj=)=>amcCFtKPJX1pZxv0JKCMvU_&dQ8;F~|%DAyXWOY;Xj!$DydO z3P+`tXVl)%SQXZ|6m?Ysdg3hmU4s0b75d^ps~@mpv&w#FIuQ0`at91&2cP)RW0BEqi(TX9pus z?U);F%IKr#8zQpbaJpcnK|K9XFb+31U zPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu z-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m z0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(8 z6W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;Z zH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULas zfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O z1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1U zPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu z-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m z0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(8 t6W|0m0ZxDu-~>1UPJk2O1ULasfD_;ZH~~(86W|0m0ZxDu`2UH({{Z?KF_HiP literal 0 HcmV?d00001 diff --git a/assets/Audio/SFX/blup.wav.import b/assets/Audio/SFX/blup.wav.import new file mode 100644 index 0000000..baad6e7 --- /dev/null +++ b/assets/Audio/SFX/blup.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/blup.wav-66b5348abbc4b8ce1dfd16626382b374.sample" + +[deps] + +source_file="res://assets/Audio/SFX/blup.wav" +dest_files=[ "res://.import/blup.wav-66b5348abbc4b8ce1dfd16626382b374.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0 diff --git a/assets/Audio/SFX/player_jump.wav b/assets/Audio/SFX/player_jump.wav new file mode 100644 index 0000000000000000000000000000000000000000..d5a1c6c0faee6e3c46a9c1c186ef6ee849c2559a GIT binary patch literal 5290 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 literal 0 HcmV?d00001 diff --git a/assets/Audio/SFX/player_jump.wav.import b/assets/Audio/SFX/player_jump.wav.import new file mode 100644 index 0000000..3acf3ed --- /dev/null +++ b/assets/Audio/SFX/player_jump.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/player_jump.wav-de4e28ff7abe759f54b174a6113fe72c.sample" + +[deps] + +source_file="res://assets/Audio/SFX/player_jump.wav" +dest_files=[ "res://.import/player_jump.wav-de4e28ff7abe759f54b174a6113fe72c.sample" ] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop=false +compress/mode=0 diff --git a/src/Actors/Camera.gd b/src/Actors/Camera.gd new file mode 100644 index 0000000..ddbdcaf --- /dev/null +++ b/src/Actors/Camera.gd @@ -0,0 +1,48 @@ +extends Camera2D + +var _shake_config := { + 'amplitude': .0, + 'transition': Tween.TRANS_SINE, + 'easing': Tween.EASE_IN_OUT, + 'priority': 0 + } + + +func start_shake(duration:float = .2, frequency:float = 15.0, amplitude:float = 5.0, priority:int = 0): + if priority >= _shake_config.priority: + _shake_config.priority = priority + _shake_config.amplitude = amplitude + $Duration.wait_time = duration + $Frequency.wait_time = 1 / frequency + + $Duration.start() + $Frequency.start() + + _new_shake() + + + pass + +func _new_shake(): + var rand := Vector2( + rand_range(-_shake_config.amplitude, _shake_config.amplitude), + rand_range(-_shake_config.amplitude, _shake_config.amplitude) + ) + + $Tween.interpolate_property(self, "offset", self.offset, rand, $Frequency.wait_time, _shake_config.transition, _shake_config.easing) + $Tween.start() + + +func _reset(): + $Tween.interpolate_property(self, "offset", self.offset, Vector2.ZERO, $Frequency.wait_time, _shake_config.transition, _shake_config.easing) + $Tween.start() + _shake_config.priority = 0 + +func _on_Frequency_timeout() -> void: + _new_shake() + + + +func _on_Duration_timeout() -> void: + _reset() + $Frequency.stop() diff --git a/src/Actors/Camera.tscn b/src/Actors/Camera.tscn new file mode 100644 index 0000000..0040baf --- /dev/null +++ b/src/Actors/Camera.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://src/Actors/Camera.gd" type="Script" id=1] + +[node name="Camera" type="Camera2D"] +current = true +limit_left = -45 +limit_smoothed = true +drag_margin_h_enabled = true +drag_margin_v_enabled = true +smoothing_enabled = true +drag_margin_left = 0.09 +drag_margin_right = 0.09 +script = ExtResource( 1 ) + +[node name="Tween" type="Tween" parent="."] + +[node name="Frequency" type="Timer" parent="."] + +[node name="Duration" type="Timer" parent="."] +[connection signal="timeout" from="Frequency" to="." method="_on_Frequency_timeout"] +[connection signal="timeout" from="Duration" to="." method="_on_Duration_timeout"] diff --git a/src/Actors/Player.gd b/src/Actors/Player.gd index 4a50655..5b2471e 100644 --- a/src/Actors/Player.gd +++ b/src/Actors/Player.gd @@ -10,7 +10,7 @@ export var max_gravity:= 450.0 export var respawn_position:=Vector2.ZERO export var wall_slide_friction:=.2 export var wall_jump_speed_factor := Vector2(1 ,.8) -export var dash_thrust = 500.0 +export var dash_thrust = 550.0 export var max_wall_slide_gravity := 100.0 var LandingDust = load("res://src/Actors/LandingDust.tscn") @@ -30,6 +30,8 @@ var _can_dash := true var _is_jump_canceled := false var _direction := Vector2.ZERO +var _falling_start_position := .0 + enum States { IDLE, IN_AIR, @@ -53,6 +55,7 @@ export var abilities:= { } func _ready() -> void: respawn_position = position + _falling_start_position = respawn_position.y $AnimationPlayer.play("idle") func _physics_process(delta: float) -> void: @@ -123,9 +126,13 @@ func _on_landed(): var dust = LandingDust.instance() dust.position = position get_parent().add_child(dust) + var fall_distance = position.y - _falling_start_position + if fall_distance > 150: $Camera.start_shake() + _falling_start_position = position.y emit_signal("landed", position) func _on_jump(wall_jump:bool = false): + AudioManager.play_sfx(AudioManager.Sfx.PLAYER_JUMP) var dust:Node = JumpDust.instance() dust.position = position; get_parent().add_child(dust) @@ -146,6 +153,7 @@ func _get_direction() -> void: func _check_dash(): if Input.is_action_just_pressed("dash") and _can_dash and abilities.dash: var dash_velocity := Vector2($Sprite.scale.x * dash_thrust,0) + $Camera.start_shake(.1, 15, 2) _can_dash = false # Wall dash first if _state == States.WALL_SLIDING: @@ -222,6 +230,8 @@ func update_sprite(_direction:Vector2) -> void: return if _state == States.IN_AIR: $AnimationPlayer.play(air_animation) + if air_animation == "fall" and position.y < _falling_start_position: + _falling_start_position = position.y return if _state == States.DASHING: @@ -254,6 +264,7 @@ func _on_die_animation_done(): func die(): _alive = false $AnimationPlayer.play("die") + $Camera.start_shake() GameState.player_died(self) func setAbility(ability:String, enabled:bool=false): diff --git a/src/Actors/Player.tscn b/src/Actors/Player.tscn index 2b17bff..be61ed3 100644 --- a/src/Actors/Player.tscn +++ b/src/Actors/Player.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=17 format=2] +[gd_scene load_steps=18 format=2] [ext_resource path="res://src/Actors/DashParticles_right.tscn" type="PackedScene" id=1] [ext_resource path="res://src/Actors/Player.gd" type="Script" id=2] [ext_resource path="res://src/Actors/DashParticles_left.tscn" type="PackedScene" id=3] +[ext_resource path="res://src/Actors/Camera.tscn" type="PackedScene" id=4] [ext_resource path="res://assets/Items/torch_ligt_texture.png" type="Texture" id=7] [ext_resource path="res://assets/Player/herochar_spritesheet.png" type="Texture" id=8] @@ -655,7 +656,7 @@ anims/run = SubResource( 10 ) anims/wall_slide = SubResource( 11 ) [node name="DashTimeout" type="Timer" parent="."] -wait_time = 0.1 +wait_time = 0.12 one_shot = true [node name="DashParticlesLeft" parent="." instance=ExtResource( 3 )] @@ -676,14 +677,6 @@ enabled = true cast_to = Vector2( -5.2, 0 ) collision_mask = 8 -[node name="Camera2D" type="Camera2D" parent="."] -current = true -limit_left = -45 -limit_smoothed = true -drag_margin_h_enabled = true -drag_margin_v_enabled = true -smoothing_enabled = true -drag_margin_left = 0.09 -drag_margin_right = 0.09 +[node name="Camera" parent="." instance=ExtResource( 4 )] [connection signal="body_entered" from="Sprite/SordRange" to="." method="_on_SordRange_body_entered"] [connection signal="timeout" from="DashTimeout" to="." method="_on_DashTimeout_timeout"] diff --git a/src/GameWorld/AmbiantLighting.gd b/src/GameWorld/AmbiantLighting.gd index 9ca7949..98c25f6 100644 --- a/src/GameWorld/AmbiantLighting.gd +++ b/src/GameWorld/AmbiantLighting.gd @@ -3,7 +3,7 @@ extends Node2D var LIGHTS = { "DAY": Color(1, 1, 1, 1), - "NIGHT": Color("#848282") + "NIGHT": Color(0.678431, 0.576471, 0.576471), } var _current_light = 'DAY' diff --git a/src/GameWorld/GameWorld.gd b/src/GameWorld/GameWorld.gd index 6a99d50..f81a66c 100644 --- a/src/GameWorld/GameWorld.gd +++ b/src/GameWorld/GameWorld.gd @@ -5,9 +5,9 @@ extends Node2D func _ready() -> void: - $Player/Camera2D.limit_bottom = 250 - $Player/Camera2D.limit_left = -45 - $Player/Camera2D.limit_right = 700 + $Player/Camera.limit_bottom = 250 + $Player/Camera.limit_left = -45 + $Player/Camera.limit_right = 700 func _process(delta: float) -> void: diff --git a/src/GameWorld/PreGame.gd b/src/GameWorld/PreGame.gd index 45838f7..dec94e4 100644 --- a/src/GameWorld/PreGame.gd +++ b/src/GameWorld/PreGame.gd @@ -17,7 +17,7 @@ func _on_OldDudeIntroArea_body_entered(body: Node) -> void: GameState.start_cutscene() var scene = (load(_Cutscenes.old_man_intro)).instance() add_child(scene) - scene.start_scene(body.get_node("Camera2D")) + scene.start_scene(body.get_node("Camera")) yield(scene, "cutscene_finished") old_man_animation_palyer.play_backwards("fade") diff --git a/src/Singletons/AudioManager.gd b/src/Singletons/AudioManager.gd index d3c18dc..784c2ab 100644 --- a/src/Singletons/AudioManager.gd +++ b/src/Singletons/AudioManager.gd @@ -34,7 +34,7 @@ enum Sfx{ var _sfx_files := { Sfx.COIN_COLLECTION : load("res://assets/Audio/SFX/coin.wav"), - Sfx.PLAYER_JUMP : '', + Sfx.PLAYER_JUMP : load("res://assets/Audio/SFX/player_jump.wav"), Sfx.PLAYER_LAND : '', Sfx.PLAYER_DASH : '', Sfx.PLAYER_ATTACK : load("res://assets/Audio/SFX/player_attack.wav"), diff --git a/src/Singletons/GameState.gd b/src/Singletons/GameState.gd index d3b1d77..ae47d6b 100644 --- a/src/Singletons/GameState.gd +++ b/src/Singletons/GameState.gd @@ -104,9 +104,10 @@ func start_new_game(from_main_menu:bool=false, change_music:bool=true): var state = States.INTRO_CUTSCENE if from_main_menu else States.NEW_GAME if not from_main_menu: _data.statistics.runs += 1 save_data() - var delay = 3 if state == States.INTRO_CUTSCENE else .2 + var delay = 3 if state == States.INTRO_CUTSCENE else 1 if change_music: AudioManager.play_music(AudioManager.Music.PreGame, delay) _change_scene(state, delay) + yield(self, "scene_changed") # get_tree().change_scene_to(load(_SCENES[_state])) func start_cutscene(): @@ -126,7 +127,7 @@ func go_to_main_menu(): _change_scene(States.MAIN_MENU) yield(self, "scene_changed") -func _change_scene(state:int,duration:float=.2): +func _change_scene(state:int,duration:float=1): _state = States.TRANSITIONING Stage.fade_out(duration/2) yield(Stage, "fade_finished")