From 091aa8827e6f112332d2f19ef5ed1f5d50c6962b Mon Sep 17 00:00:00 2001 From: feinte75 Date: Sat, 10 Oct 2015 01:39:26 -0400 Subject: [PATCH] Story #3 Add automatic generation of testScene - Modified prefabs The generated map is a square with 3 platforms The player is automaticaly instanciated at a currently hardcoded spawn location The collisions are handled with BoxCollider2D An additional saveScene function as been added. It allows to store all the generated scene into a new file. It is then possible to reload the specific scene into unity. --- Assets/Prefab/Environment/Wall.prefab | Bin 0 -> 8160 bytes Assets/Prefab/Floor.prefab | Bin 4136 -> 0 bytes Assets/Prefab/Player.prefab | Bin 4136 -> 11040 bytes Assets/Prefab/PlayerCamera.prefab | Bin 0 -> 8208 bytes Assets/Scene/GeneratedScene.unity | Bin 0 -> 197620 bytes Assets/Scene/SceneGenerator.unity | Bin 0 -> 9892 bytes Assets/Scene/SceneTest.unity | Bin 19204 -> 0 bytes .../TestSceneGenerator.cs | 87 ++++++++++++++++++ ProjectSettings/NavMeshAreas.asset | Bin 0 -> 9100 bytes ProjectSettings/QualitySettings.asset | Bin 4852 -> 4568 bytes 10 files changed, 87 insertions(+) create mode 100644 Assets/Prefab/Environment/Wall.prefab delete mode 100644 Assets/Prefab/Floor.prefab create mode 100644 Assets/Prefab/PlayerCamera.prefab create mode 100644 Assets/Scene/GeneratedScene.unity create mode 100644 Assets/Scene/SceneGenerator.unity delete mode 100644 Assets/Scene/SceneTest.unity create mode 100644 Assets/Scripts/ProceduralGeneration/TestSceneGenerator.cs create mode 100644 ProjectSettings/NavMeshAreas.asset diff --git a/Assets/Prefab/Environment/Wall.prefab b/Assets/Prefab/Environment/Wall.prefab new file mode 100644 index 0000000000000000000000000000000000000000..52a5f0be67725a84852ed9af24b6a3e00dd919f7 GIT binary patch literal 8160 zcmeHMOLN>r5T1o3B)s46B-RHr%}aelMf<=)j^Jlz%rkVGMrkmL z{6Ra2GBeq-Rc;0Y|3>JIQih^A2=4OS?Pkf<)j^QO$?9(AQzLP-MD@FgKlFNCFY%)+ zSAU$UJ%Rcpwuu(MTZK1*&|kaGdY-hH0)$r!>U!BY2eIv{C4kr%tGTpcEz0~P@ekGo4#}Rd%-3`SMK$q#4?@8kAnPvXPkkAa1)XW|z-OmCO&=iA2%fjSATa|k^USmKhEaqFLYf!`Nt$sRKtTk7XZBfP?~+OV zejE+hSskc5L>>-<(dZF z@&{b58PF}i&*hr@r2GqBDLyU??#5}r27{s<0wja59%_Rf>T56poB(WS%ve@x+>PAsq+dfN}_?e9e6G)=|(MG~oh9LakUw zHPuO&S^5;lSh7nhf>u+WZp~Q%HOEPdwZPSUCZMWXYL)UES_PrnCAP97j_T6{gxDUl zhwF2u&5$P0dK_nWlR>`jE;u;*g27q$BZ3g9mOrw>nK1~+LnbZq*T>Eu|7|AC7ueOv z>xKS+qe_#fjW1(z*ov2C8)I(}-%lB;vr8L21$5o-`?O+fw8N@7{N7rWT>*y&qj5Iz zw$~`|cDZfMu`MK5B$h)jF^A?AHiMAT#Jj^`>Ss)&ntNO3A@i}OQcblehiLBCRO^;o zD%Di$mRs)ER4e5Lx!uOP6?kFF?B?(+nE`KC(?@VEzRO6|*v%nZ0zx>dM3*8rhj_;f z=Rhcj=p0GsKvJ&stk5wiSp-cw8*0+zra)~dax^(x&D@gTX+LU@eCzuYIN8jMK@dJJ z_47IQ?RXFjgT6geAlA{ZIQnBnqy%nnkwWZ|>kD>qCS{Ms*(E?ixF+2jBCSjm|X%5{IWHwFN}>LC3?huqGf#QX=+x<90IfT(Y2 zLr+H7)i^qOKO()XjgH=k2&jnMb$=4?_=Dmf3LCxEZAp`3^ihyDuo$H3K7=~q#v*Sa z5Q+L6NH^s~V$+VK*4Me45%sqf|7n(U8nnAdL32F)*xL{u=<>i8Srs-wUb1H^vNL#SMMHUwxi^?6-2@2TM|U9TqD(@#0NsJ0n-J9d(hEZbJ zD8(4yyB6v>i`=CQdhsknAm3?W{lgG^ zcV;Nc5>4b@Km;su=r=QO-cYmw*1iB--UNU%IO7EHV(aDBtK>QST`U#@w0|E5h_p<^ z7~YCX0&XuDh>v5mm;Vm@WD+|5N=!3l&=I2ts&wGI7Q z#aWU~gvnHi&K;8yaw6wB2S82`MMl5=rbSsLN*CMc))i z_nwInIT{W`YYU2m*{?w-X%|NuG{YK|_83>J5otn$;d48`(OMjWeNtJc-1jsi#*wSC zpOT4D1vJ_@Bdw-Vo5PMsu`q(uVjp?9v{V`^WgD^$M(9*pZO*o_xOVA_QA?Y19*E2p zZO#WkmC;$5!nCGKN;1O>ZR|WO%tgewng=^eW{ohH+Cl2|WM61tA;{I9=4BWH)s$u; zKd=Y+O6}^@qSuH`q3-UE6^*@E6^*@E6^*@EAU?`Fu?zJ{{U5FAf*5R diff --git a/Assets/Prefab/Player.prefab b/Assets/Prefab/Player.prefab index 66cda0d99a3549bd163fe4d27b15b0a678c0e942..9cf492f73a79d5ef6712d6f903bc290311b9a72e 100644 GIT binary patch literal 11040 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 G5a_?(a0jda literal 4136 zcmeHJ$!^;)5FK|(_kCZJZa_`}3KT^TMUZZ3b7(6Vy&JSeDJmqlgG^ zcV;Nc5>4b@Km;su=r=QO-cYmw*1iB--UNU%IO7EHV(aDBtK>QST`U#@w0|E5h_p<^ z7~YCX0&XuDh>v5mm;Vm@WD+|5N=!3l&=I2ts&wGI7Q z#aWU~gvnHi&K;8yaw6wB2S82`MMl5=rbSsLN*CMc))i z_nwInIT{W`YYU2m*{?w-X%|NuG{YK|_83>J5otn$;d48`(OMjWeNtJc-1jsi#*wSC zpOT4D1vJ_@Bdw-Vo5PMsu`q(uVjp?9v{V`^WgD^$M(9*pZO*o_xOVA_QA?Y19*E2p zZO#WkmC;$5!nCGKN;1O>ZR|WO%tgewng=^eW{ohH+Cl2|WM61tA;{I9=4BWH)s$u; zKd=Y+O6}^@qSuH`q3-UE6^*@E6^*@E6^*@EAU?`Fu?zJ{{U5FAf*5R diff --git a/Assets/Prefab/PlayerCamera.prefab b/Assets/Prefab/PlayerCamera.prefab new file mode 100644 index 0000000000000000000000000000000000000000..f179fc6bb9abdbb00437e5d61a1d1fe7aee5300f GIT binary patch literal 8208 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�<=?zMtU1>Zb;v_2vq`1|m=?!k8xK4V0a&kdr< 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 literal 0 HcmV?d00001 diff --git a/Assets/Scene/SceneTest.unity b/Assets/Scene/SceneTest.unity deleted file mode 100644 index c4a098f4509eb4c521ff91dfdfeeccebc8a32a4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19204 zcmeHPYltLQ6|RY|B))Zx@!ff-@fFD$!>Y+{_e}5XjG5h?Oz+0mLa6Dk=`OdXs;#cx zorwV(MARRm1Qd(}CW7D(H6nt7-~%G~BmPjM(SQ0wRPa{>5q}uZcg{W4=T=uw)(!Y# z?ov}#_nv$2x%ZxPzH`s5-XLhdHVE!~W)K8d1wp$>_u$r>Z@c-()-Az5o_zAj7tuTJ zC$ltLj0WL_I2-4|VmOKd%6$^#NDKHg;WmPCI*R*g)N90P5p3Ucdh^3kw^)gL(Q*>@ zM*+HGa(CC~_4OjZ{dg}fvi$f?5m6&qdX(y~=h0TUxgO?GT1Z>Ll~nZ#x{y$Pf&SrL zI$VyEXtmA#JOdPzlnBp4v>p}%M+AnDEDT_#;9>g4{bLT0z;%oM*7i?J%1MdvGSmOnLQ}Sc*RwR%Bh=~fG~7(0 z9+y4W&@Hs&rLxwteEwQL&sKBKJUob0r<=#a0>hIh9@_Iw4LsHk?FEJi!$X=G+6yJ0 z*;k@bk;iGDdOStb%R&qpM*_vd#7$|Qhr2~r_> z8VU^j5)~gpR1t;)#n(l_($q-jf#M%1{yqPdioca)Az^p8(-}r&{eh6zvJ8tvvz4ZI z$hCo`8LxnmbrJ+XjsxRRdL@_b6%$y1P z9r0Fx!~l7u{Wt>7@5@mg%=;W!Mdz-lNnXS=(M~bWqr+`j?NwSuUc^^`B}z(K>#V&} zXiC=bII=ix>S=kEp$^Sr6o4CR0YP2m#xr|0+}N#+ z_GY=U7EjBkKstz%9z_-yN3G=pia_V9CLiWbZ2@T1+?6N0idqG`dMVYz&hyl}MOpa6Rg+Sz>E*9j)V$0$@q6k!>|D z(7Z6Oo~!9LJ?yj5qz$ru9u5a_mu;0b!p^yKtyp zQs<__Nk0?j{itvmtSk*zK}`8HjOkhZIzv4JIM(nP&ReTl%KFh!Rjtnf$gWTguW45luwe75RLFt>K>i8l7ku z=HlQ%=iXRT0gKz|MrqWEih@>WG-n?$2?CrHRA%N<@vHPx*6;4L5l6;8(8^Ol?PK<< zZVH?zb&LU+O2+6JgMn<7 zjM-oYm2ooC9p%P-y2_R7Aha=0nr&c131_6)`tV9*#|pa~CT6T23=tcsR9ytX4)V1@ zWv?8o#T}yK#A7WbUHUac_MCmHply0X_VCEHJ2PYtlpImn?_zj4o*!Hx#DOK*E+hVrEHAwqa`EHX^ z{;SG|)jm+Zr++-~pH@DVlBfD;fcab>?2h8@=pM=FRQ0hI>Z~HNJdrHT zSPH9vN>r-VnLO_IDMWz+Pyd>fLFsM|r5(mzt%JjU7%*S?8jQlC{<1Uk6|RA1oGGb^ zpaoKH`dOlr9T%qYREsDv3AQI6C8Z@Pm!5o7l=8c%jn=pqXKV3@KD42p_~cIaD^$vp z5lo(z?|OiXJdYx8|0}9_j(Dzo=5-(zG$*VO3-q_v2-%Gfh>&KC(EoBsZa@Q)=z_o9 z{QwVD{_wCT;_aw+ll9%i8Il!wwlTZqtUnFbVTO^oJqpIbgA$7-!8&Yhkx;I|G$|K1 z4)jQ~p`toF0*S9R@-OesL;=!1fAdA%yu+~$K@d|&1kJ2TG(B1(>|kz*1uIEUAdJo$>_vA zO8YL>=EE<|A0;KGm~4Tb}9O23?it61D+03ai!bBSsEji+sj| zuahAX`gQWh=y@%=5G9B~oD92s$vv&-*=96?wKT76Dm?(DZfiBvLs7@zjE3qg*`bzEQ62AygVGjN z(HyE&{ED9>&Tr$cXkxD$6-?Tu$nGs`Nc4o9|&0Z4VqF@NhLs9>V}hAQkP1>2dSDx z=pdMIWLH6VBN}DNm?KY+P9L8q+^3SRg`j_E0ea7H zAa0(I&9+?JJRgK@xwv_{X%uz0KDp6nBKl_{nNJ1s^CPCi@ z=c{F(@S9LA$Apk4_$!!=a960WtD)A_F!XecSmY#9{;9+DmsXi#!aX?Rer5kSbPk`G zCJE+JxOF|FaR}Qt?$dMYbZeVrPBs*;-|Iv`*_Jut2?WpN7{? zw>#q;r!*(SA>zwkCpXp9lm%K3dp)A&_TN-PEDNV+bsRs;JxGRVXK>Gqmd^qKG;hgmV>a{9n(2|w4RWhZPS$Suson| zdR@fnM${)^Y2}gFDU0_$^Zbd-YARiHWhZZe-=~(3Wh&%8*jq*l`iUZf$tw_gEQy7D zZJAvPCoJ&u+#@?P7X7Juy&qv=U)EcVrTJ3KqP-G5MlE)Rd0a#i^ii+5&Y1-QU#24P z01r-1W!8Bzre~%9_LEa*Sm&PIK*}gNvLyn-&LHe%7sa0XqVAE>=WG#uO>e1vX%}ie zJW_{|+~;VA_1Vh$f-_liSaK_W-;CH6Ig)2$e0_C#YiktA=X1XJTOUXcX?)4wV>ZOX ziMCsJb|J9k@|m-BQ~h%JT+RBXT3+s+G`Js;MEAzB1cQ6&XBzkR$mN@?f{=GvxT+(sAaI{29xYDl-` zknrl%h_)vz@3NU^it7w@(3BV1Tw0E&wOVO+K)(qCMqY2L(zDK+$FlV~=dygGX-SDh zHE6Q%<^F1_ddl!+UCf2%glktop+jF#k$&<|cia!}-%!&_XEiNuxeaHnLNA|>V=N7zX7Wssp9Kg;{OTb&jrqyWmMq=z{Vfe1;3ppQ7smT@Sj8 z-9u{h2)#ezt|Nbb3lsBNk+)nRzxa%8~_f^W< zq4&q!^)Tf%s1e)V&tAEb?NHulh(_D{IptkRgT9sW4!i3Yl-Hy@+umc8_g%^Z|H|Jl zDeqcxlPxd5qP+K09_9~jRZjO`Q{Lw&4}IYO+&~^RHBE|y$VuYOJj{3BK2B+G-00E& zkugq+25pAu|L1_Q4L*I}J6|#Q)uVTQ_t57*8QuTVuV7_^;HE3S^W)#_Jhb@br9;Eu zQ`?VA?(fh4;RTcQj#FPcb#HL!Pv8Hz`X+?O^ z1>rU)$NqZLxnmzal)65q{i5z4iAmxKqEmhq^3z8jrFYOxXBj^(n^bB_rAN@fM9}b=j;3QgwrQst z@M}jiIkxh<%^$t#+=pl_kf3|8Ws_q%2-qqvqCc9a@722-S2g>R<<-{5TK{(UVbfNF NWTrmZdeA*v@1NRa7Y+ab diff --git a/Assets/Scripts/ProceduralGeneration/TestSceneGenerator.cs b/Assets/Scripts/ProceduralGeneration/TestSceneGenerator.cs new file mode 100644 index 0000000..08425a8 --- /dev/null +++ b/Assets/Scripts/ProceduralGeneration/TestSceneGenerator.cs @@ -0,0 +1,87 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; + +public class TestSceneGenerator : MonoBehaviour { + + [Tooltip("Put here Player Prefab ! ")] + public Transform player; + [Tooltip("Put here Player Camera Prefab ! ")] + public Transform playerCamera; + [Tooltip("Put here Wall Prefab ! ")] + public Transform wall; + + private Transform environment; // Stores the roo object for the environment + + // Use this for initialization + void Start () { + + /* Temporary hard coded parameters */ + int width = 100; + int height = 40; + Vector2 spawnPosition = new Vector2 (10, 2); + + /* Create the root environment transform which will contain all the walls */ + GameObject obj = new GameObject ("Environment"); + environment = obj.GetComponent (); + + /* Generate the scene */ + generateSquare (width, height, Vector2.zero); + generatePlatform (10, new Vector2(10, 20)); + generatePlatform (10, new Vector2(25, 10)); + generatePlatform (30, new Vector2(50, 25)); + + /* Instantiate the player */ + spawnPlayer (spawnPosition); + + /* Save the scene to a file */ + //saveGeneratedScene ("./Assets/Scene/GeneratedScene.unity"); + } + + /** + * Generate a bordered square (not filled) beginning at position + */ + private void generateSquare(int width, int height, Vector2 position) { + + for (int i = 0; i <= width; i++) { + for (int j = 0; j <= height; j++) { + if(i == 0 || i == width || j == 0 || j == height) { + + Transform wallInstance = (Transform) Instantiate(wall, new Vector3(i + position.x, j + position.y, 0), Quaternion.identity); + wallInstance.SetParent(environment); + } + } + } + } + + /** + * Generate Horizontal platform beginning at position + */ + private void generatePlatform(int width, Vector2 position) { + + for (int i = 0; i <= width; i++) { + Transform wallInstance = (Transform) Instantiate(wall, new Vector3(i + position.x, position.y, 0), Quaternion.identity); + wallInstance.SetParent(environment); + } + } + + /** + * Instantiate the player and camera at given spawn position + */ + private void spawnPlayer(Vector2 spawnPosition) { + Transform playerInstance = (Transform) Instantiate (player, new Vector3 (spawnPosition.x, spawnPosition.y, 0), Quaternion.identity); + Transform playerCameraInstance = (Transform) Instantiate (playerCamera, new Vector3 (spawnPosition.x, spawnPosition.y, playerCamera.position.z), Quaternion.identity); + + playerCameraInstance.SetParent (playerInstance); + } + + /** + * Save the current scene to a scene file + * Stores all previously instantiated GameObject + */ + private void saveGeneratedScene(string path) { + // path example : "./Assets/Scene/test.unity" + EditorApplication.SaveScene (path); + } +} + \ No newline at end of file diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset new file mode 100644 index 0000000000000000000000000000000000000000..885f616556a165423fc3255a3e68344630a23853 GIT binary patch literal 9100 zcmeI&cXw1p7{~DeR4k}q?H}c(yeN& zYpQGRsaJmu4-b!``)AQtN3v{guG}{#8OoK)sx2w!6n%GC=lal@s?q?u87!9by~SL2 zO}1xlh#a5pKvto z(nt1$V`yEjl=8)1RZRNLN$JP*p_}nlb33C{N`{pAQ=fQt7P^_xs+69q&$pako=Z=0 zZF)c-X<(MBt1l_3Zhdb0(RJ*jSo9PIl8WjYC|A-UVifm1fWe}rUg;&KkFhqy?7zwehdGMbx`Ywam4idX`A-0Do2EzP$ z>;Sub5IeF)f~cV;2vG||WQd)FfWFuxkRz%C!euB?$DcB3W;u{#Wr zA@&do2C*k3cIiUw1yKydl=R<-yKDU#J;f02eBV(B#8Z~2|^qI zLu7~pg@Qq}Kw_6JL@Puw5KSq>4A|v^Xk(28aS$~@h;|qvLmVs=3}PlEcIiSK0#OXa zv=m|%?D9bz${Gn`HZ?(r!(fOEF-IsE#9T=1(uL@NCXM#0e0^ zK-8OeUnjygpTtS5kt7yT6O=d^hR70$P%w#3NbJ&;=z=Ip!dzQ+!#1Bpjx~}*4>duF zUKk=v^a%x%$U|b6uEb)9q9n}4tdS%xrY2R;x2?j*5|_Xb zS>jTmU=k}Ku}fFtGKiui%oXP4u+1lN1#2XUE2#-eTm?g9iK~TzNn8VoUAhw2LKG!o zE-|lzZ9a+XStCi@Kuu8MMi?SX+$0oC;$}$f(v`Rcq9_S-jkyZ8`6O;-jU;g!H9?8n zVTdeohfpwyJ0Y=4SK=;+Vk8>OHRj#0%_ngWYb1$#sR>Hl2Sa3u`-Or@JOGJZx)KjU z6eVGVZZ?Hy^c$1o-#9J^#mUvqzn8Z7f*rhA+E<{lh<{I-o*yfXXpEZ)i z2h;>5K7=8%#79EGBtC}3E?tRFAc~SO*O;HeHlM_2tdS%>rzR-z1q_iTz7z^3@f9R? z=}LSJQIv$a#{34h`6Rw&jU=&}nxMpYFhrL4UMQHv50KcUEAb;lQ4;1F^C#HmllYl6 zlEg361SNijA+p48Lct_{hr}*ji9aC9B=kes>FM<MwSTrTguOHWi-iFQ0G`(gE&u=k delta 316 zcmcbi{6&?6fr0HO1B1|)jT~Rtn7%M={>OHWt6q?Sfq@-}9rIF(@-tHyn1F09Aa=@0 zOwM*nEh?&H0E=-0#oTfdi!%ap5-U@S7?^>4J|K4YaSc{*%`MGIEXmBzV*rbT&1*|5Z-Uy@^WMOb(ZgFW|x