From 2f4ebca336218586cc0e995ceb1c7358cbbddb7f Mon Sep 17 00:00:00 2001 From: Wang Yuyang Date: Tue, 14 Dec 2021 16:33:11 +0800 Subject: [PATCH] Bullet --- README.md | 2 + bin/Scene/Objects/Bullet.class | Bin 0 -> 3425 bytes bin/Scene/Objects/Player.class | Bin 13070 -> 13157 bytes bin/Scene/Scene$1.class | Bin 811 -> 811 bytes bin/Scene/Scene$2.class | Bin 794 -> 794 bytes bin/Scene/Scene$3.class | Bin 921 -> 921 bytes bin/Scene/Scene$4.class | Bin 1073 -> 1073 bytes bin/Scene/Scene$5.class | Bin 754 -> 1344 bytes bin/Scene/Scene.class | Bin 9147 -> 10037 bytes bin/Scene/base/SceneManager.class | Bin 1465 -> 2249 bytes bin/main/Camera.class | Bin 5015 -> 5022 bytes bin/main/Engine.class | Bin 9180 -> 9291 bytes bin/main/Main$1.class | Bin 2717 -> 2717 bytes bin/main/Main$2.class | Bin 1352 -> 1352 bytes bin/main/Main$3.class | Bin 878 -> 878 bytes bin/main/Main.class | Bin 4450 -> 4538 bytes src/Scene/Objects/Bullet.java | 82 ++++++++++++++++++++++++++++++ src/Scene/Objects/Player.java | 3 ++ src/Scene/Scene.java | 32 ++++++++++++ src/Scene/base/SceneManager.java | 20 ++++++++ src/main/Camera.java | 10 ++-- src/main/Engine.java | 3 +- src/main/Main.java | 8 +++ 23 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 bin/Scene/Objects/Bullet.class create mode 100644 src/Scene/Objects/Bullet.java diff --git a/README.md b/README.md index 624765d..13fe810 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ But in the video, I am using a Mac computer so the FPS might not very high... WASD to move. Space to jump. F to change the perspective. +Shift to go up +Enter to go down That's it. diff --git a/bin/Scene/Objects/Bullet.class b/bin/Scene/Objects/Bullet.class new file mode 100644 index 0000000000000000000000000000000000000000..83afaa53f2c9bfad6ff18417d6c5ce186388856c GIT binary patch literal 3425 zcmd5;ZF3V<6n?gOYtyZzg_Z{7T_8=ND{n##R-mOc7@%6L))&eqS<)@r-LSi9;G6$I z|An8NQOBmBGmfA9;P@x}BaY9#H%-%$QU?adFL&=fdtRRBoO93aAAkS+D}eKOlE955 z-o$hQx#-oefF$sOy3sghA9AyQyevX``>2a zB{7TKee+t8%8R${C3-&js+_(TnyRaQ|6iedg)~P?oEB`vbW3-wPYO|nSjloilTB2% zLN$;yoJ%bdq5TVnS+D9BttnfKk#04OMunn=0dWDH+7fSE|acG9VO6fSIzUB zg^KMyOyGfzG8Q!)-sy6SFt&~ZIH=*k3maN!F6lUg!wEdp;b2+E5gZlbQL$Xm;lk5V z!4(~ka7~AgAc0Uv6)QSwSdxuUsFrm+7Kc6UCN#T9i6s`fRU@2PV?i4uiL!L>t_TRvH7KD+p5!nWjk zoTsn(R}$s(VrJyj={0m@enDhj?~nFJGj+uJ<8>r{L+2X0R*~ep?)f$7tLVu@p5l#F z^!^|npWr%(7}oHMOV1WF7mI)kdF< zlD+7tUF@6vWOkBh&k^q!Q+|`I=GapOo@`{{;XRp~L4~=Qn+mgbl#Dd$Ty8KkK_qIJa_;A literal 0 HcmV?d00001 diff --git a/bin/Scene/Objects/Player.class b/bin/Scene/Objects/Player.class index 9befcaa07a8ecaa1caffaeda215f4b15e5dfbca9..deb487e2707a32bb881205e2c1aa094e00f30777 100644 GIT binary patch delta 3690 zcma)733yc16+Y+An|ZU`gb*Q+5Y_-fN(@;<0Zj-{76mn}t&P-TfDjYn3`+n-?XVgZ zLE*85#efTfvN|C|KsFZ^K|rEHwRHicTDNLjEl~77cai{p?f3P4Gyi|yx#ymH?z#7z zH+S@z(cyy^x9udNY(D8Dhg%6G3$*sr0&Zh-TPqjCR$qW0>ULgk@8=GjVsl47xw(_r zcJ}hs!dw@ZNAA*J@{rnUCToRhRXOYVt%WiZ{vJ<{gpK!xer-+$%hX6`PY2A&A;(e z9{*Ox?vTvye=mBg$Z2BSTvSY6V^v*e0-D%mam!izb9( z@5K@$VZ1|h9T0O;e!u(6N`j+`#!F~VX?lfrYT6~RTVRjCUV&EyUK4m-;0@Yo^J2|a zyi(Hv$;jboGTwJi1+Gay#;e5P)0&^5vzqoHTl_3PXY*>!&+{5hZ_*)~*J^%&*DxhG z^L)+19W!Ohi<*{DrRH_KUei)qrg;OM)3lscXx_-1u=CQwNrmZUg~8(Vp@rr5Xx_{( zX^wEU<}GxVsd;F8aeCS0(&Do8(Ac6NXyA~H49zvX)#h4FEBR&3+Yl9Rm(ZT2D$P51 zlii75(Y%v)Y2M9yG_4i=Ua@#aq*q0Hj;fp=bnB$o_;s7#(7cbatpl>Rg92~TekVPq zL-?539+RjJ@nM_a(tL!E+I&p&+jL6vaS62!K!2w*n&08|HovRsGx}V!&F^XYROWvp zun0Ltice^I3PI3HfmH%e3#=A+USN&D3j!}vl~>a`s$yy;S&f{I8DupH6c?4>7Mf5} zUJ?p2B|CZUWS3lk_U;x=uE*yLjc*fnXaO2S1`U=~A^GGS4C53G;|#!FiN!F&F^q@| zBPhd2m|>*WFw$li@ft?Rh7q-4q?#xU$Jl{UU=xP14KPW)7)G5KMrjyEbr?p07)Fg4 zMwu8!r5HwS7)E&*Muiwgkr+muV0}EO6{A3X7)CW1MnM=xO&CU57)E6nMsXNMeHccG z7)F(VmE3>BC=|oE{f1F9hS5mc7y-S-Fxm^aDY3K{;PHs3*-XWC&g_I4J>S7lDp_zm zf!?L}@Fvm;oDv)9BqU{|KjFk&#>xB89FGiau|%AFlsG#qPO`}jvx-J16^%|RsKH4E zMV*M<2lQtw`xngAW+~Bp2+cx3;w>D%bkrL@|I4~EbVcjq2OUW8#HLjUO zU*Q-TVxt!*Q$dePHlCLy_XtZ0k}yW-FLK}GP_WHWu1UCX9q}Ew6l15$ zV#E<9!3EldIKt#yEF$T#Q&VPdA=l6I6Tu4Am*vN9h&7&Ue6*qo`j);EZ;=tLk9xT- zlGS;m%Up^lDMMJ&g>3c{PjrJDQ z&y_U9lDbGEZTdl}3#23+|E6=%UARYJr8r!S58|5EQmB?PB8901Dz0;C4Na}4X@Nz{ z$rHHV>um3q!qc4(yQOxWp6E^t)XL0b^?&zYh3sWrjqc%}P9!J4? z!$oMZatJZJmU=`T@(xO=xBHsLMD0{UgG1Fd>X2g94GsPzZS@D^Q^)Bdj)N&)9i$)4 z!L(9)7#-~(GSW$HWrk!?7gfy){lZPzY7H*!eq570wTxYmY`R6wWebv*hN)@nhUB9{ z^#FS?*H5KtJln`ez+CQZ^8bix)i!%^w3mMDRe0o`edws?>A~~#(0Q7Ya8;9}CRY)& zp99guzoI{|oZV&p0axZyA=I~rI4^6C`7e`Q>#m$k@%59NoA$%8(jhUs3CGE7r)~F^ zrVOK6}jId43^+qo1Ywpf1q<-Gg{FdCuR&iafy(jIU0C#y90 zn`5-H_T{V0buu!0 delta 3572 zcmaJ?33yc16+Y+An|U*DE?Z;^NdO%Y2*!{EV*yRr1j8cIYHg%~AtXSE84L+jstgJe z6hz2VBq*DLf+E`hMu-Fv5h4-6(zt=w@XNKU6PLcY$Pq9s<`2r1<$d;Yg}rPb;gcYMDrB0_g%70=@iv zy>O<@H&|KmRm-gGjEoG2Li`g^_ZH}5-E=6HsINTUC~%WNmO!>ZKY{)Z58#0!4HCFn z7C1O!^AMYFaVV2>9J-!|3JjC?!^M1r!?*HCdA!XUoY;@7{)va`9UjF$wfScb_2=8= z-5t`IpNn*-NWTy%*P&5-m(8Pn{Q_5>zI{+idr|z->TepE!*^Q)rl6&xp&VoLSb2F* zfb)2q1IQ0jkn^R#<0V#sye)Ki0#6iak}vyUm3&OcimbicWN$(|S!|2N;$D$T+zn`@Mw(vYHni&|zZR+WOrgv$-rbG0Uro;3eQ^@_=6H3(lBtOLzm>v!nkDW59 zWU|dmG(XKtnL4{O?amQcbCsr-X#4R@9_Hn; zycL>P(g{s(p+UTgSKIuY=I42hrh`;x^IFX>@R~~9K9VlhFKSvsPitPs>oqNjl`+FYmk9X@1pz2{myc-rO#J>P@FaSSmLJvhEGnZF z0xJbp39J!VEAWEAI)U{9FQNG8C(XuK>Z)$;NKYqsL0rekVyeW%r%{eXg%ptH8%FC5 zqw!$B6j4?2bNid9IFpT4G7!zO^Ltq$lU>Ku7V@1L^7zIYaFiyW=41i(GfMJY* zVN8Ny41;0JgJFz>VN3;B$$59rUD2+q^i|2tU>J9WVO$sBR>X2$0FOj(ZaqiwQMaz` z?B4I=RWe!dn@Yc-V|Wtjx7ZRk((fQCBYlAF@t7bVLUSZKx7|_+(y7Dzhy>|HUYJ!h z1*vEXQbCPDDkv62>^`E8k@olS)Fzc^{s7G%r2_gBbf3_tz$1801*07DCU2uY8;!wH zpwB3aXoBQ7QBXr{5lnxk;|<=%%E-em)v4 zy=Ifg)N%{ibPwwP2fVO0e{EwVNHX#GJMyojf8uN^O7U0Hx3Kfj2!AR43z9{J{@ey% zS$T6(XDQ#Ne=Bu{lyu-b`aV{LcPKKo#9^s#*{Yht)sz-pm7J@%of}9A@hmqbCAs^o zcyD}g2R#(;?4Z6?I=16 zeW})~uhbTGQdO%{YLEIxy`{cYb?Q556*` zeb~eEU-l_{}}Z z;oxPQJ#yt<;7oBBIh6?u)L(Mke7djLhZzW0!_4{)mtH;ubQ%2-K40 z%01%N_G}+%D!C!+<-9Ot@QP!s|B_2jU3}?XQoO0XHMhB>_8zD`a&hPWPZ@GP{M@(0^Wx{zqoOp|Xf?F>dGRya3emd9(po3X zGw41Hoe2u3;j|J-db@_ hNLTerYZ&jrV0i@rb-4;rmD$jnS24g(+K?l diff --git a/bin/Scene/Scene$3.class b/bin/Scene/Scene$3.class index 54f0736ce8f5cd0d4f2e760dc23c45eff8d24633..b31f30c51863cc867f90eb5b054ebc58c004a862 100644 GIT binary patch delta 59 zcmbQqK9haJBqqk@$&;CSHQN~km^v85n7SF{nR*y>n0gsZnfe&)nIl diff --git a/bin/Scene/Scene$5.class b/bin/Scene/Scene$5.class index 758975a548a838e2081062aa718bac9d2c1996a8..c16a2413117eaf6f34daf585efbdc4bf70d35ffc 100644 GIT binary patch literal 1344 zcmZ`&+foxj5IvI(*<>>@K?D)JL`3B#D=K&ayl{^uNEH?jzD>fIEH1m$?gsr8ee)Bv z6fGYtef5(pOYNB~1d8%uXS#d)a=K5?&p%(k0l0;=3^=Y@$YIFBFhcN21r1?vlB%Dm$`^hh7e%eH5QtX{{l`%}t!~L$G_63Sd@VEd9>W@YG33OH zNCxeUscO@8WyH`E$Fw{{drsR4L~cD2wU-sKqruax8LV}`8Pw#GqdK%S-tjH5E2xJ> zujcxp9&yZJ-oygOB9=@n zbF84m@fc4`lsPI`<#>ud1y7R~4~+;`Kx|idb-R_6#?f-o{Fc-p%T5>(>^-4MaHD?{3du0xgPeBYJABSJdc4aP^mqoeWxsXdr)ksbL6HnxW}eVIL2oowvgfibIU8yfcj(j=NxI}OXoAa7Xc zHL@rg9M_B-CXIr|R3!gAuHZZ_XmnEt=%!+HMar2);x~#WF8-qA1_sEKz$FaQoy27d NKTVQFjc~ew^grEZEBpWe delta 354 zcmZ{fOG-mA7=^ziz0EboxAtLM--?J(L5IctbmGW)Hz0`Iu`B4PBa5Iob|ZovC@w%e z=@kUg!2jf&FUeE*$hyy;_m99C2Z4-cV4YSkU`kv;OrK6%l!SH;kt4mhDApvg_N3R)OA&jYIbyo8L6=Z>?_VrrvBQX6nz6EXNhGY3@d-3+;7yIQ12z`AChBr V`jjZ00RyO8H7QtImx&* zZPrR1F^!tI#F*H$H3c20B(4yxTazXlO@fI@+Ek6vnpjgcvG>g!(s$|DjyREF3PBOo!`#BX8Bu-_1P?^8-X}G4N1gCX4@h?TLYxr76x$4iqb<9`%hU}=Az^7J;n>v$= zGM7~iw{&<^$=}Gl3-cIpp;Erp;ZzkljX!sA$NbJ4p3yE%w(_J zJLTAMjqc*QaavWEqEV_wY0Uwlkv*cMzN*UQom=XuulBlX{YmB?&99rvX}Gnl*132_ zsjJ#W2nz)f;-&;Gj-rxESE;wokriB=q0u0X(*4=ylJM<#*}zMR1kmDdGT&_q&|v>1 zbHB&{4KeUL{GNjia?ntJ->{jz|9~BYs5?Omr)C>?6@T7YaCd`65qJx36;|43EA1B4|1IU_0Apr6o#2F;jUDkZndVzeg zp4tjW)#A#EDu=terrzr)@YL6F^9*-gR=wBjsm}2%t|rKo{8X;P;;#12a#q!IfGH)F z_pU8cT2VPSnIoqBAW;UvTH*2*)w(O(43n6WI;F%}=W#8Hfrlk7!Tf5Ecipq8_aMe1wvRaSV8Cp(1 zBSieSk^-l9K3C!OOm~*Koz;vXQ*u&scn5W=BvYw}O-7x|o8zwK@eEebFU3DmkBgYa zx~FzTc}D6iLT`V9j2Ef1n%}eKkZ&tL=HNFwUX3kF@!%N_avmP$RyDLi&chnyJextz z-C?e)L1JzJshMZm%9?{YF*m2Rz@)+j{=_saXzYpIEE_>N%8WL=#;O&sV-K5Jo418W zMfo_ID)9h2iZB#2F$xRdMjh7UAsokYyn~gb;c*&+RkQ$&v=QrR8#d4xY!L>wi}BbY zYOzbah}Xnv95C5%*fb6&Obc<+v=yDEcln1$=ih=%ezI$DO}@bI;3+bhtzSI1h$zc{s4a*=$ST&6d+f12ZZ&S8rrhBzfG)=3g+1gH;r+rCo%P^|3)X);k z4q9$$r4^RT^q6%Zt+LLcM(Y~dU_DA(bV1wo(X>Oaq2>A_+NIe1ri+g;M|_GBasGR#rQe~J;s}pos6;bNNg0yCj)oHOIE~_2m7HR$sTIqc zup)q!&q0$fL7EzBx-_QXr5Oi1AIay46PJ)6zQ6!+8H2H5SdJHuQzk`Cz~K%WlrC}+8p`U{}o9;h~yXJ?XLHN1V0U&AK21{)x|CFw_$0qEqYCK zV+$S$V66<`nV`wW2g-)ug#6Ejv~|(z1K1En5dl0G!1K)zcc2W8-uQn}Hib}p>!Pz5 zCNicAh1#&0YuVC_hoUz&^I3-GLv<#!=R$O2Ii6`RKDyrMk3JZV1b(dgA`^+2z+a%CEre^JPN6r3pXRZA{-`;ocbMBdSLmIA% zZacNU5x}L?-Ggdu)}%>cAz}vN2Huf*0#I;bi-D~&cdb_3*rFiOtYfz+Y{w1*J7wL6PT?6WSU)F=xd%b2~eK;!L~d0RDjp$4_z zcp-SzC$h;l4`Fjmn`5^5Q-z^AkbQDcvR*fobH-RTa6ra6wZbrPj?ZN53ms#Vh&JD< z&7VgNe4$W`m_h_!YVwtVg9@Yce7;t=L-TKBd~^8C`^jtR}Y8%CO4()ntxZA zrZfJbFat4JP*??-!yc_3)8tQ0j?2a!J9cX6guHTT!h2Gye`#_`_Ghnrd+?5(2L9IB zVw{&?5E�W?^Y*$;7;Ik@E7Aa?9^HR@+mKqVzU{$3`k6;c=1D(c!|ipQ3Ws3;E)Datdk49^kLtksTG>k?xygSf3}#u0Z7c}!A_e4jhl;l&E8 z(LJz}Nj`)8CIzt4q#z|36f&s|wbcL{%(U}NJdMRBwWDONirSmhfjSa=iL5s5b{QeV z>SCr?;{!%NlTwI5J5#DjXV^%3pxunSE5?iq-w-JsS$3C+4)!y+4KYb0}LnS8@*|;aW@S$*3vD;FErBKi|%xfr*ijeG}-+IO>zH3 zGdw+Lwr4n1c^1$j&vsg(1g%hgX_XpJlT{_HS8HjLI!evnY})NDroG;3I^f+((SzO- z)M{Q#N6ZNQZZ4pc<`&^Fj|-2lrwI7QiDchPBGq?5WcriD1^yzD?Vl(5_;-n%fKOZ< zxKM`H<_AuQ>fjY(ad3)Q9&8k=f`5xO_Ds^@ zaIc{lUhRd~cw|TdRzr_ZOKVWe^Wo1R?*(y^A8Uv=l!>X`x6#LyJ;DYSnI%B`hwR%w|)i*PZbn z^rGWcZ@kr+8fNT_qj!$i{sMnSb=2qVZfFVtGqdl1P1b*omVb zS7VrqBZRBX=)=6MuF0?v!+UYWuqd1BvRaB^IgTzYHKPUZ%kY5=nK*|P8E(XJ6RVN= z-$3mTWB5o+*JQXA!^bhKD`@4MVH-EIJ4VheD|Bae^m}@$;+j@!&T;g;j9GTm3e9U~ z!Pec1V<@B=>C9x-1Spl&%SOsu`k3iiT1RJ0+jM6Y!ijPEj9e?`iPM%bZR18|H)}Yz z^sGfmXQr6bt##coWgiG5?zYLu`j0qR(QUn8IK+?T9sR30%Tl*)l(3CeUS64XG08gQH&DC>XuIQy8`lw^<7Vj~) z!51Q{XGnr*sVjp*U%mf&RTg5tVp)c}WV)oJ1{stu<)3+3MYEosLQjBoNJrtcp3m1| zvmOP*trL**-o$vLT9fgMjZaSOg0}Ku{Jum(cp;?c#a7rW)!JdIq0I@71uec-tT;Ji z(UdOh@RAI=XHxoI!w6ntMH}?Kh5-y}*uWh7sg6=Wq z%p%Mc(4O3fNKFd*FT%IF>4!q2j=Ii4XjB%&%D$WI1-w-Q8*;sgX zIQayTDw-anUsl6aM1MhS;(QgS9)#6*|NbfXVMYmbdNy5XMK`1CB5tqeCrNpT8m}Qi zO`--KWi^hZ7sVJRaGqMP^Sl|MzY$W;n3iHorGlX5c`OOUC60+Inl}!oHbB!s&t;FV zdEh9H3%E!eg(+ML@ctly5>6?6dFUWXLsmn6l2yc?qGgk=v?plwr_=t_rtPD>ijFEe zJI_4)7KxhKujqP&f#;@&&Gog348dQumMEre}sgMVu1wRW$Y&RMN%aN8fAPT z?0UpW=B0ytO8l38gLw#D8p1-?U)XwvCd%GCma*O=j3vp~#Q!k%7T#tQqx2+|P@J12 zqwl$ps)9*~aMFYEd#Wi2)bG@Hc>XTZ0mv$6NhX?{2)fhn9=|)Mn8KyHfT9N}M}zL4 Vp{?&lB*Vn^yxKd@K7z#9h- zYT{i#$q-}BijPb(UDI9NRnu>gr_kp6=kqIoRqW{qA+KRUhk|?%Itmgk%4tO)kgKWbXhI81d_HJQ4;Q_$h&t+*A62hU|u>mPT{&$s~7g0 zO{aZSyJ{IQ&~IQJ8wNJ9m!-&CR6o@0?@in!0F8NV1Wxbzs z#u%qzdVN{u6>1M-1U@p-y$KQ}G0GVdjUh$WIB^h47mE161WOZal&0?0Wbx0GMN-@w zZh0p4-;p||C@gr=m|-pIruwW~*{L!ITKM})px5=igjv?-V9OrzP8j9))okt&{tl6k l-}zZeiVGY6r?39%tG&f$$Td7gW-M;_XV+Px9E%F(zW^-=JH`M2 diff --git a/bin/main/Camera.class b/bin/main/Camera.class index 8f8ce0feea1fe5c3581cb71dbe083b64ba3c64f1..123fde52c2e153ece3a6cf80269d0aa89f8dab27 100644 GIT binary patch delta 392 zcmXYtODlu{6o#KOGYoSvW<=4*P?~aENLg428;jY=Mivr<2^$-faa~z{g>u`7Bx7d2 ziQHr1o-kvf_yhjJSUAb%?K$VvdCz&5gB!t^#hp8VootY_>2z<2yEK74Nr`i5jqDvG znpb0uQf++Yt$R#X<&q7#Wm8h@8VjDi<}|~M08Y7QoNj~(t$f&j7`0^R%g~#lztCBr zlSu|uhrklXibE~i%#r*CiFipSC`}Sr>@#VN>jEob)mZ|n``Cz*!vQX0c!^U)0zW3@ z98$>Ua4nB$wraX>hU46@JmoF Y`!(QlsbF5o{+Cb%4&%%hFur^zzgXm1d;kCd delta 386 zcmXYt%`3wJ7{@=)eq-3YY?D%iq=ni+yJ)qtgOG#LE^?4KAY7DC7;-NXz==O$4xZ%leLhc5eZM{5HBZE|Z^_RMVIvzPov`Pxi+Ns9Z^WoGzYA9F z2Sg>wirlbaMhfGBG{cMlc1bZoH^QWDPO^U(wPfha(3_#(?bgE-1FC~y8OI<`{o4}Z zBA?6{r!+=!IypL|{D{h>z68MowJ{h{U8G8N3o9{lh~r>e19m83mooPBdPofkyd2ZO z34W3^aYhR%+Bv6_3%a diff --git a/bin/main/Engine.class b/bin/main/Engine.class index 693afe0c329f207bbd50bc2924e4d0e7fa95670e..4e9afc5ea140d088a34c049dde9d5653396184e8 100644 GIT binary patch delta 4037 zcmZ8k37m~(7ytj?xijy*?|sKIyD=EMMvN~@mh3bNNsCNeGRwmq&Dh*!3lDXe9cD|T ztvon9!MFmCt$AXYZA`bV%R&$J*iJ5E{FgaC$)LT*4(yn$X!I{>kBvHcn(t`BlU;UB z0%k2SpIr>P8gw%_C8gJ*gjGtfxmC>O0}00D-NWn=W>1g3*xO|v4;^gn`RwZPLyVB(($2?DBb^FYv|q_DFuxOQQQD4Vt}-gFe=v+{atk>Emte zbh*XHkNDo_D+0WUo$+>FZuYCJn$-ASP}EFL98TS`TW`>A8IfBhTr=9j(c40^|_A` zW!mTW{K4ms=I?oIa`}_b{bqH*7W~=5I>=vq{>tBc{Dl2JHe$KYx+YDs0Dt#+$g~a{ z{J~l-kNE8PC;yV1M|~dS->w7Sq2sttlJA6^WYT;#;)RF_Iwo}J<>N;tzlkPhiTGz=`7)}=UyH2+6( z0d911iPZcV`2$KOUp~Hc%9O78zEhtOljQk$6f5Foe$$qZ;c+6nZ1R}G38m97E}1@| zaLV|xqc1D$TQrSyxzRXm=?SPZ6i}5^K$Wb3DqjIr$^xpa1yqR(sB$M73tRqz38gTg z%3?s3NKp^lf`vV7ucAAu=o?j3O&aK_hXblM7KL3R0o6ScP+cVf)ol_`6%UXhRt+Pp ztF-7|5q=V{$cn{2)m$f}3dbXa5%4im+M|$%5;Q{@+F>HPVk(B?3S5XQC7CA4bd=&M z?2=W1tV;CTjnAN07MI|2d?9Mwms*+u_mwyYUyDzJ^S7KNx%h?z$GP}6q+|IGd!+D* z6!HQSJpyY`f3?Phg_sh|&Zs)ky|UPc?=_dOaHJ7fWn--o7Hf)lV5t?>Zbt3f*9L7a?b(q4|< zYLy~2%3w80v09`Qt1wBWK2r^GJyv6m3V*(e{SKA;-Ac|c`N>yNoQ#;&$1h3?bk!y5 zqc!*8SNx_FSyiN4Rdj-*s&Mf;=;BaFBHeu&1 zv0AGhzlU6DrRa#M$j@h(k*XA?BXkT|E0EjT5LY zI{OMSJFR<<*0qxyQh_D~&)}TW3^ZD}6rC$kr+7W;rd_`d>6)Lt4mYITD1HrYT8BC7 zkXeD8f~2*WT~I758O4`2&In@2)g=mEjoQ2h?KuOTITQU)pgtcDkM)poJcnmf~9LD(Iwl zw+DKmCx!{j^iIr0-?q44r?nRSb;B3w5gvd;I8B$;K(@jl-Qa`OHfN~B)8))z#(x3Z CpD{oH delta 3867 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 TX@ae$scMG3zHsnAqIr1$L>?_` diff --git a/bin/main/Main$2.class b/bin/main/Main$2.class index 2089e7e39a23799d547180cffdeb748de2ddcd67..ec6087928e8c0b74cfe2297589d51308b9e79b94 100644 GIT binary patch delta 99 zcmV-p0G$8G3djnup#uTflcEFEQQH6m0Nelu0Nnry0N(%)0N?-<0O0@{0O9~M0OSBS z0OtTY0ObHY0OkNe0O$Zq0O|ly0P6r%0PFx<0PO&E0Pg^K0P+BQ0Pp~Q0Pz5W0P~Z_ F1c4;3AS?g? delta 99 zcmV-p0G$8G3djnup#uTelcEFEQQ80l0NVft0Nelx0Nwx(0N(%;0N?-`0O0^L0OJ5R z0OkNX0OSBX0ObHd0OtTp0OT^ F1c4x;AQk`s diff --git a/bin/main/Main$3.class b/bin/main/Main$3.class index a1a26aeefde65897e16c3676ffacfe73484c923e..8c6e22e8a12baeb35a63ec4e30f9414cbc9532ab 100644 GIT binary patch delta 37 qcmaFI_Kt1CR3=8o$Gdy@aU;ss2fCSML6&0dXR7AlQ+&~2_9hF2ya0`>HG1`n4wdaOf zwoqhQB4a>If#p_OVP<8vSY{TKm@R6S*tvrXUthEQXSx49_nh<2eJ8`KBOC{ts%rqm z;<6X4cuIk(V=C5aSf^pV4huFY=SIt5rs*igCgt1gg-mQw+S3Z2QLt6d+zM$#Js$mEPJkbMua)Tr8imXIIP** zlIb%K*#>4SScU>~qoqUdWjJgg2lF+2Y~Tn!F>n+G20q0!1E1k@1ILv4g@T1xLFwIl0j(44q;OoI#^`$Qm;CEPgex6iYOmGw_?*_B;MC za5t71xC>bZ@|Ct&!JjJe^O#1k-DpT!_M$BNES2;H0~fjS7>|w~f8i1#*esL5T+ZJr zgMU!qT<(!39aDJ-ebE+oU>XS1*%Gj`J)?y^6YVeyS=ZO^WScw7_8d2VF5BGh7Pgn_ zGp~86KDi}#$1S_Q`!)=|bkWdWWQiUN-46{Wv zo3hy~$KVPi79+SEelFNDyaR@NdsiZ$0)eFny5S5MVV?DA>lhg@;_9k@(?%yo`BSzN zqix>qn7%HgWJFaWwE|VmtW=C;5sBvWXh<7e^>i9H&;Ik%Gi|Y9lQa zEFIp|UItPJ*^WYGIEBfs6fXNvgd9d)WF|$)nbck8Q?y)8y<{Q9$RdiB>nKicrdwqR z^_9D*pLEdxSwsD0Eyc?{tna4;Sx1TT1Pzg=DOuLjP}x99vXS+3lp-(C829wW!s?K< zJZ6P>08%zw)704EL2e#IA?4#?JOUC$l#7+D2|UV=;%2nIEQ&O!UsS6EvZ}v-0(trR zh6Hp8$kyfZ!!?d7=~8p u$XYm;8i77MZG92R6V(|*(FLQ}E3lfm0&8$P%XU1e@hri)#a)%L&GKJ4N0XBP delta 1829 zcmZux30PEB6#mb>Gd_6p2nH2VK@G$uRC38o5y2QR6+{IUEfR%TR5URm%cjh%FxRIf zriqoIWhyf@5R|)RYGrDfON*8*mbP2@<=D9cl3z97%zu{q-*eAB_nfJVJR9LW;H}#Z zpbswl!-}N}mg$&)z&*^v`FR0}Wiuj_ADr{8drdCRQ$qz4E9BblXNxZB!W?=KO@+r<&bWV%& z*rKB^ma7n3)%n|0&}tROrNONuR;^j^s)pBe41!0+t($vtGd)3f{ErDF-Zj zLm2i2?u5F=b_F{$?9?$FyA2C-K$}rj!}3^9rLz^{VGGw>m40ql{}yl zVtLT*p+VHfR!}^+AaC^KnYp<|1Y2?Ltc)2+1w{qL`KDKdx_e0*Sq^bXGr=-Gpb&Wm z?om*JQgfpvtY-<{H82HJHN0oweH=FM0ZI)VL6(7|IA-8OWqzb!2JR(rw+P8v9c(*~xY$iOG~RKsTmKF1jY)0O8e&Ja48?X8jKQma*dfiKNf)^<_n z@RfnDRpf6Je2Y@fe_D1yQA`R$$KD3c<2&<|H9YluTrhASW@)%+;0LwsNBm@9Hf9-^ zi5vsPO8Z&m{0p)OL510~vty=a7v;sI=g-W|W=08qHSn7{BFx;Pg&HZ-b8-z_!taDo zbEgdDEB&Fe_!Fh>WzEv1a{~8Y09xZNWPxxuTLKf=&c4o`gf^IroTl|$wz;}&=ll2t zY;(!4v;9@AdCgzd$|t!(KFQT(sjK@a8KLgvbMU==l5fk>%E9>U81FY1>mj}8u&)_g z;G-U3G<>=h4`MD`{&)yZ#pR8a(72%>Pr8rmO9UmEc>z(>!CVxO;dCLvgTWODbs?}G zL7BGTWSgx9!5%cPLdZYP;317(7ZQCNBAV9jXj-#-SGh6NPWf&O3$oQBz5+MYV|ZqC z4N^Qvb-_`A9xfztfYn#EdW^_)+WjZmE!%34R*R9ATHNkNQkC~YYIhGtS9#Aha=oV& z*WN7NE<5~-y1S8D=Yr-zdNqVxAlJ%DjFQ!IzdXp(B*B%UI36Ek55}!XMn9zCHlDKn{MG~bMPl(7;;@>>eJc{Mmsux}hzoF#Kr*$$5Q@f7 zipMa@KnfKim7GYU6&OjIFq(ECosMA)oySI#1RS>C#ku(NG-)B3Xv9S#Z%r!wxG7M zE47!g6e%6lQI4a|GK;#%9Ez4xshcdJ9&#?l$OY6>mQydemTr-i)LS~&Qy;m3jg8b# zR#Shuiw4O36ekZ-tUN>mOW_lQpK*~ecG}T;~hevr-=FvFJ z=c@nls$r#+th!-G2q=WBRUo1`Gf4`o=`(76cn z^)&y5x*)c35K?b>t?QZj)c-N*KTP;xQN!f$?)jXM`V6l}hBLDUW84s|HfU6jv8;`A zBcw@dU5`xmjdvqZy5VSSQ|as0ga(mV%>f&d>%^l6wBvbhj~2L*wFq=UBzkeX^+gm0 WawQVcnUh$oZX&P*cbaSL?fwQHGK+x# diff --git a/src/Scene/Objects/Bullet.java b/src/Scene/Objects/Bullet.java new file mode 100644 index 0000000..c4c59a2 --- /dev/null +++ b/src/Scene/Objects/Bullet.java @@ -0,0 +1,82 @@ +package Scene.Objects; + +import Scene.base.SceneObject; +import base.GraphicsObjects.Point4f; +import base.GraphicsObjects.Vector4f; +import base.objects3D.DisplayListTexSphere; +import org.lwjgl.opengl.GL11; +import org.newdawn.slick.Color; +import org.newdawn.slick.opengl.Texture; + +import java.util.HashMap; + +import static org.lwjgl.opengl.GL11.GL_NEAREST; +import static org.lwjgl.opengl.GL11.GL_TEXTURE_MIN_FILTER; + +/** + * @Author: WangYuyang + * @Date: 2021/12/14-15:52 + * @Project: Assignment3 + * @Package: Scene.Objects + * @Description: + **/ +public class Bullet extends SceneObject { + DisplayListTexSphere sphere = new DisplayListTexSphere(1f, 16, 16, getTextures().get("wool_pink")); + private Vector4f direction = new Vector4f(); + private Integer drawCount = 0; + + public Bullet(Point4f origin, Point4f position, Vector4f scale) { + super(origin, position, scale); + } + + public Bullet(Point4f origin, Point4f position, Vector4f scale, HashMap textures) { + super(origin, position, scale, textures); + } + + public Bullet(Point4f origin, Point4f position, Vector4f scale, Vector4f rotation, HashMap textures) { + super(origin, position, scale, rotation, textures); + } + + @Override + public void draw(Integer delta) { + drawCount += 1; + move(direction.Normal()); + GL11.glTexParameteri( + GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, + GL11.GL_REPEAT); + GL11.glTexParameteri( + GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, + GL11.GL_REPEAT); + Color.white.bind(); +// Color.black.bind(); + //bind texture + getTextures().get("debug").bind(); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL_NEAREST); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); +// oval.DrawOval(); + sphere.DrawTexSphere(); + + Color.white.bind(); + + } + + public DisplayListTexSphere getSphere() { + return sphere; + } + + public void setSphere(DisplayListTexSphere sphere) { + this.sphere = sphere; + } + + public Vector4f getDirection() { + return direction; + } + + public void setDirection(Vector4f direction) { + this.direction = direction; + } + + public Integer getDrawCount() { + return drawCount; + } +} diff --git a/src/Scene/Objects/Player.java b/src/Scene/Objects/Player.java index 050c897..bea917f 100644 --- a/src/Scene/Objects/Player.java +++ b/src/Scene/Objects/Player.java @@ -734,6 +734,9 @@ public class Player extends SceneObject { player.setAngle(angle); } if (Keyboard.isKeyDown(Keyboard.KEY_RETURN)) { + if (getPosition().y < 0) { + speedY = 0; + } move = move.PlusVector(new Vector4f(0, -speedY, 0, 0)); } if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) { diff --git a/src/Scene/Scene.java b/src/Scene/Scene.java index f0f96f0..91aa4a8 100644 --- a/src/Scene/Scene.java +++ b/src/Scene/Scene.java @@ -5,6 +5,10 @@ import Scene.base.*; import Scene.skybox.Skybox; import base.GraphicsObjects.Point4f; import base.GraphicsObjects.Vector4f; +import main.Camera; +import main.Engine; +import main.Main; +import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import org.lwjgl.util.vector.Vector3f; @@ -40,6 +44,7 @@ public class Scene { public static BunnyTestObject bunnyTestObject; public static NPC center; public static float bookRotate_Speed = 0.1f; + private static Integer bullet_counter = 0; // private static ParticleEmitter rightParticleEmitter = new ParticleEmitterBuilder() @@ -740,6 +745,25 @@ public class Scene { } public static void drawScene(SceneManager sceneManager, Integer delta) { + if (Mouse.isButtonDown(0) & bullet_counter <= 0) { + bullet_counter = 30; + Bullet bullet = new Bullet( + Scene.player.getOrigin(), + Scene.player.getPosition(), + new Vector4f(90, 90, 90, 0), + Engine.getTextures() + ); + bullet.setDirection(new Vector4f( + (float) Math.sin(Math.toRadians(180 - Camera.rotation.y)), + 0, + (float) Math.cos(Math.toRadians(180 - Camera.rotation.y)), + 0 + )); + sceneManager.addSceneObject(bullet); + } + if (bullet_counter > 0) { + bullet_counter--; + } sceneManager.drawAll(new IDrawListener() { @Override public void beforeEachDraw(SceneObject object) { @@ -749,6 +773,14 @@ public class Scene { @Override public void afterEachDraw(SceneObject object) { GL11.glPopMatrix(); + if (object instanceof Bullet) { + Bullet bullet = (Bullet) object; + if (!Main.harmless) + sceneManager.BulletHit(bullet); + if (bullet.getDrawCount() >= 300) { + sceneManager.remove(bullet); + } + } } }, delta); } diff --git a/src/Scene/base/SceneManager.java b/src/Scene/base/SceneManager.java index 3769672..0069328 100644 --- a/src/Scene/base/SceneManager.java +++ b/src/Scene/base/SceneManager.java @@ -1,5 +1,9 @@ package Scene.base; +import Scene.Objects.Bullet; +import Scene.Objects.Player; +import base.GraphicsObjects.Point4f; + import java.util.ArrayList; /** @@ -18,6 +22,22 @@ public class SceneManager { } } + public void remove(SceneObject sceneObject) { + sceneObjects.remove(sceneObject); + } + + public void BulletHit(Bullet bullet) { + for (int i = 0; i < sceneObjects.size(); i++) { +// System.out.println(sceneObjects.get(i).getWorldPosition().MinusPoint(new Point4f(bullet.getWorldPosition().x, bullet.getWorldPosition().y, bullet.getWorldPosition().z, 1)).length()); + if (sceneObjects.get(i).getWorldPosition().MinusPoint(new Point4f(bullet.getWorldPosition().x, bullet.getWorldPosition().y, bullet.getWorldPosition().z, 1)).length() < 100) { + if (!(sceneObjects.get(i) instanceof Bullet) && !(sceneObjects.get(i) instanceof Player)) { + sceneObjects.remove(i); + } + + } + } + } + public void addSceneObject(SceneObject sceneObject) { sceneObjects.add(sceneObject); } diff --git a/src/main/Camera.java b/src/main/Camera.java index ec49d3b..2e70a7f 100644 --- a/src/main/Camera.java +++ b/src/main/Camera.java @@ -149,7 +149,11 @@ public class Camera { if (Keyboard.isKeyDown(Keyboard.KEY_RETURN)) { - position.y -= speed; + if (position.y < 0) { + + } else { + position.y -= speed; + } } if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { position.y += speed; @@ -209,8 +213,8 @@ public class Camera { rotation.x = maxLookUp; } } - if (!Mouse.isButtonDown(0)) - Player.angle_target = 180 - (int) rotation.y; +// if (!Mouse.isButtonDown(0)) + Player.angle_target = 180 - (int) rotation.y; } diff --git a/src/main/Engine.java b/src/main/Engine.java index 1fb77ed..ffb3c22 100644 --- a/src/main/Engine.java +++ b/src/main/Engine.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import static main.Main.camera; +import static main.Main.harmless; import static main.ShaderLoader.loadShaders; import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.util.glu.GLU.gluPerspective; @@ -375,7 +376,7 @@ public class Engine { public void updateFPS() { if (getTime() - lastFPS > 1000) { - Display.setTitle("FPS: " + fps); + Display.setTitle("FPS: " + fps + " | " + "Harmless: " + harmless); fps = 0; lastFPS += 1000; } diff --git a/src/main/Main.java b/src/main/Main.java index 080af05..357a391 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -33,6 +33,7 @@ public class Main { public static SceneManager sceneManager = new SceneManager(); public static SceneManager backgroundManager = new SceneManager(); public static Camera camera = new Camera(); + public static Boolean harmless = true; private static boolean isBigScreen = false; private static Boolean setUpFinish = true; private static Boolean FPS_MODE = false; @@ -279,6 +280,13 @@ public class Main { setUpFinish = false; } + if (Keyboard.isKeyDown(Keyboard.KEY_L)) { + harmless = true; + } + if (Keyboard.isKeyDown(Keyboard.KEY_H)) { + harmless = false; + } + if (FPS_MODE) { camera.setCamera(new Vector4f( 0, -300, 0, 0