iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 4
1
自我挑戰組

我要和天一樣高!!!(Unity 2D手機小遊戲開發日誌)系列 第 4

Day 4: 調整Main Camera長寬比、設定角色移動邊界

  • 分享至 

  • xImage
  •  

(本篇網誌版:http://shineright.blogspot.tw/2016/12/day-4-main-camera.html)

我要做的是縱向的手機遊戲,但目前在場景上的Main Camera卻是往橫向延伸。其實Unity Editor中Main Camera的大小、長寬比會在不同裝置上自動調整(以後的文章會說明如何用Script避免長寬比失衡)。

到Game視窗,左上方有個可以選擇螢幕長寬比的下拉式選單。這是用來模擬遊戲在不同長寬比的裝置中執行的樣子。隨意改變長寬比後回到Scene視窗,Main Camera的長寬比也會隨之改變。

http://ithelp.ithome.com.tw/upload/images/20161204/20103149vXLTgmpUt8.png

如要模擬手機螢幕的長寬比,必須先到上方的File→Build Settings,選擇iOS或Android,再按底下的Switch Platform。回到Game視窗,長寬比選項就變成各種手機型號的長寬比了。

http://ithelp.ithome.com.tw/upload/images/20161204/20103149u7MLyDl37V.png

我認為這個遊戲較適合9:16的長寬比,所以選擇「iPhone 5 Tall (9:16)」,回到Scene視窗,Main Camera便自動調整為我想要的比例了。

http://ithelp.ithome.com.tw/upload/images/20161204/201031491g7NBFj7hM.png

解決螢幕長寬比的問題後,就可以來限制主角的移動範圍了。

回到先前寫好的PlayerMovement.cs,在宣告movementSpeed的底下再加兩行:

public float minPosX;
public float maxPosX;

minPosX用來設定主角移動範圍的左邊界,同理,maxPosX則是右邊界。
接著,把上次寫好的void Update()函數中倒數第二行改為下方的程式碼:

Vector3 newPos = new Vector3 (Mathf.Clamp(transform.position.x + movement, minPosX, maxPosX), transform.position.y, transform.position.z);

唯一的更動是在傳入座標時多加了一個Mathf.Clamp()函數。
Mathf.Clamp()函數有三個參數:(float value, float min, float max)。如果value大於max,回傳max。如果value小於min,回傳min。否則回傳value
Mathf.Clamp加入newPos的X座標,就可以確保新的X座標介於minPosXmaxPosX之間了。

回到Unity Editor的Scene視窗,把角色拉至Main Camera的最左和最右,紀錄下Inspector欄中Transform Component的Position X,再把角色最左X座標和最右X座標分別填入「Player Movement」Component中,剛剛宣告好的Min Pos X和Max Pos X。

http://ithelp.ithome.com.tw/upload/images/20161204/20103149ZsL6QfL0b3.png

進入Play Mode,角色在螢幕最左邊時按左、在最右邊時按右便不再移至螢幕外面了。

http://ithelp.ithome.com.tw/upload/images/20161204/201031491uX5ahIeAD.png

繪圖進度

我想做一段開頭動畫來交待故事的設定,但一直找不到好用(又便宜)的動畫軟體。只好拿用來建模、做3D動畫的萬用軟體Blender來試試。
http://ithelp.ithome.com.tw/upload/images/20161204/20103149Oju9hOf3Gs.png

大致佈置好動畫場景,並試了一些簡單的動畫。

本篇完,待續。


上一篇
Day 3: 以鍵盤操控角色——簡易Scripting
下一篇
Day 5: Game Object & Component
系列文
我要和天一樣高!!!(Unity 2D手機小遊戲開發日誌)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言