創作內容

3 GP

亂七八糟的_遊戲開發誌[2] 移動實現

作者:Daily│2019-01-31 00:32:58│巴幣:6│人氣:546
本文是序自上一篇  點我
如果還沒有看過的話建議你看過了再來看這篇

現在就來詳細解說腳色移動吧
先把我們的腳色加上RigidBody和collider
這兩樣是Unity進行物理模擬必不可少的component
其中RigidBody 可以讓腳色被物理引擎改變座標與旋轉
而collider就是腳色得碰撞框 這邊建議用capsule(膠囊)形狀的碰狀框
capsule在模擬的效能與效果算是比較平衡的選擇
至於collider的尺寸怎麼調?
我的經驗是假如你的腳色190公分高度就設1.9
然後Y偏移就是身高的一半 0.95 寬度就與肩同寬就好


順便給大家我自己做的比例尺貼圖(1024*1024)直接貼到unity預設的方塊上就好
點我(imgur)

RigidBody 要做的設定就比較簡單了
只要把Constraints 裡面的FreezeRotation的XYZ都打勾就好
這個FreezeRotation得意思是在物理模擬中不模擬RotationXYZ
如果沒有打勾你的腳色可能會被撞倒(滿好笑的可以自己試試看WWWWWW)

設定好之後呢就要開始寫程式了
這邊我不會把程式碼都貼上來一方面可能很多人看不懂一方面版面會很亂
我還是以概念為主 如果有很多人都想看的話我再弄一個更詳細的教學

這邊會牽扯到一個也是遊戲製作的關鍵 "按鍵輸入"
因為按鍵輸入也是一個博大精深的話題我在這邊就先不展開了
請各位就先用 if (Input.GetKey(KeyCode.W))
來判定移動

可以利用RigidBody中提供的AddForce來推動腳色移動
但這邊會碰上一個問題 因為在unity中Update是每個帧執行的
這樣會造成加速度會無限增加下去 你會看到腳色直接飛出整個世界


那該怎麼辦呢?
接下來就是DailyController中的關鍵了
正常的物理中在地球上因為有大氣
所以不管任何物體加速時會受到阻力而慢慢的到達一個穩定的速度
現在我們就來模擬這個穩定的速度
在AddForce後面用if判斷rigidbody的velocity的sqrMagnitude是否超過我們的限速平方
如果超過了就讓velocity=速限*移動向量
這樣就不會無限加速了


好了接下來就把程式碼包裝成一個Move函數
參數就設定成移動方向vector3
要注意AddForce要多乘上加速度值
剩下的就給大家完成瞜

下一篇會講其他移動細節
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4278279
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Unity(遊戲引擎)|遊戲製作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★q090400 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:亂七八糟的_遊戲開發誌[... 後一篇:亂七八糟的_遊戲開發誌[...

追蹤私訊切換新版閱覽

作品資料夾

zxp915415大家
各位好,小說-【不是冤家不聚頭】,已新增第二話,歡迎各位來看看喔~看更多我要大聲說昨天13:00


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】