資源描述:
《Unity3D游戲開發(fā)之使用Unity3D開發(fā)2D游戲》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、Unity3D游戲開發(fā)之使用Unity3D開發(fā)2D游戲1、人物范圍控制??????????對(duì)于這個(gè)問題,目前的解決方案是在地圖上采集地圖上的建筑物的坐標(biāo),然后判斷人物的坐標(biāo)和建筑物坐標(biāo)的關(guān)系,博主個(gè)人感覺難度很大,因?yàn)槲覀兊膱D是放在Plane上的,獲取地圖上建筑物的坐標(biāo)顯得十分困難。??????2、人物向下移動(dòng)時(shí),鉆到地底下??????????這個(gè)問題產(chǎn)生的原因是我們角色的貼圖和地圖的貼圖放在了同一個(gè)平面上,我們知道,攝像機(jī)在空間內(nèi)投影的時(shí)候,存在一個(gè)Z方向上的景深問題,我們所有的繪制都要在不超過這個(gè)景深的前提下進(jìn)行,不過我似乎并沒有
2、在設(shè)置面板中找到這個(gè)選項(xiàng),后來嘗試了一種方法,就是調(diào)整角色所在的Plane的Z方向坐標(biāo),具體調(diào)節(jié)大家可以自己嘗試。????3、攝像機(jī)隨人物的平移????????對(duì)于這個(gè)問題我們可以在角色的位置發(fā)生變化的時(shí)候,讓地圖向相反的方向產(chǎn)生一個(gè)平移,這樣角色的運(yùn)動(dòng)感就有了,代碼如下:[csharp]?viewplaincopy1.if(Input.GetKey(KeyCode.A))??2.{??3.??mCamera.transform.Translate(Vector3.right*Time.deltaTime*(-mSpeed));??4
3、.}??5.//向右??6.if(Input.GetKey(KeyCode.D))??7.{??8.??mCamera.transform.Translate(Vector3.right*Time.deltaTime*(mSpeed));??9.}??10.//向上??11.if(Input.GetKey(KeyCode.W))??12.{??13.??mCamera.transform.Translate(Vector3.up*Time.deltaTime*(mSpeed));??14.}??15.//向下??16.if(Input
4、.GetKey(KeyCode.S))??1.{??2.??mCamera.transform.Translate(Vector3.up*Time.deltaTime*(-mSpeed));??3.}??4.????注意將地圖平移的速度設(shè)置得小一點(diǎn),這樣人物移動(dòng)的時(shí)候才會(huì)顯得真實(shí)。????4、小地圖的實(shí)現(xiàn)????????對(duì)于3D游戲而言,我們可以另外設(shè)置一個(gè)攝像機(jī)從上方進(jìn)行投影,對(duì)于2D游戲,博主的思路是在大地圖里獲取角色人物的位置,然后根據(jù)大地圖與小地圖的縮放比例,重新計(jì)算角色人物在小地圖上對(duì)應(yīng)的坐標(biāo),然后在該點(diǎn)處完成繪制即可,不過
5、,博主并沒有實(shí)現(xiàn)這一功能,因?yàn)樵趯?duì)大地圖的寬度和高度計(jì)算上,目前依然存在問題。????5、地圖邊界的判斷????????通過GameObject.Find()方法獲取地圖所在的Plane,進(jìn)而可以獲取當(dāng)前游戲界面的寬度、高度,不過在測(cè)試的過程中,博主發(fā)現(xiàn)這樣方法獲得的高度、寬度與實(shí)際情況相去甚遠(yuǎn),所以希望如果有知道怎么解決這個(gè)問題的朋友,能夠告訴我啊。??????????到目前為止,無(wú)論是通過GUI繪制的方式還是通過旋轉(zhuǎn)坐標(biāo)軸的方法來實(shí)現(xiàn)2D游戲的開發(fā),我們發(fā)現(xiàn)通過這種方式制作2D游戲的效率實(shí)在不敢恭維,怎么辦呢?下面隆重請(qǐng)出Unit
6、y3D王牌插件——2DTookit,博主鄭重推薦:2DTookit是目前為止在Unity3D領(lǐng)域制作最好的2D插件,下面就請(qǐng)大家跟隨我一起來學(xué)習(xí)使用2DTookit來制作2D游戲吧!????1、導(dǎo)入2DToolKit的資源包????2、首先我們?cè)赑roject視圖下創(chuàng)建一個(gè)文件夾Textures,在這里我們存放一些用于制作2D游戲畫面的素材????????????3、接下來我們創(chuàng)建一個(gè)文件夾TextureCollection用于存放我們的精靈集合。????4、在此文件夾上右鍵單擊創(chuàng)建一個(gè)SpriteCollection????????
7、????5、將生成的文件改名,這一步是必須的,這里我們改名為SpriteTextureCollection。文章出處【狗刨學(xué)習(xí)網(wǎng)】????6、選擇文件,在右側(cè)的屬性面板單擊OnenEditor按鈕,打開設(shè)計(jì)器。我們將項(xiàng)目目錄中的素材文件拖入到下面這個(gè)窗口的左側(cè),完成素材的添加后點(diǎn)擊Commit進(jìn)行提交。??????????7、在場(chǎng)景布局界面,我們創(chuàng)建一個(gè)Sprite,此時(shí)屬性窗格中的Collection即為我們第五步中創(chuàng)建好的精靈集合文件,我們可以再下面的Sprite屬性中選擇當(dāng)前精靈要顯示的文件。??????????????????
8、??????????8、重復(fù)第7步,我們最終可以做出來這樣一個(gè)場(chǎng)景效果:???????????????這樣我們就完成了精靈的添加,下面我們來創(chuàng)建一個(gè)動(dòng)畫精靈,首先準(zhǔn)備若干張連續(xù)的動(dòng)畫文件,我們這里按照動(dòng)畫的類型,將它們放