創作內容

14 GP

亂七八糟的_遊戲開發誌[0] 開篇與接地檢測

作者:Daily│Unity(遊戲引擎)│2019-01-20 15:48:39│巴幣:28│人氣:1714
嗨嗨大家好 我是Daily

不知道為甚麼開始寫巴哈小屋文章了
今後會不定期更新小屋文章
內容主要放在自己製作遊戲的心得
歡迎各位給留言給我意見

話說是要寫遊戲開發誌
但我連要做甚麼遊戲都沒有決定呢!(((゚Д゚;)))
目前在想要個東方同人遊戲 或是其他拉

開發工具主要是使用爛大街的Unity
---------------------------------------------------

主要還是先來搞個腳色控制器吧
unity內建的腳色控制器非常陽春 (看看人家隔壁棚UE4
要有好得操作手感大概都要自己再寫過

簡單介紹下
所謂的腳色控制器就是負責處理玩家的輸入
說簡單一點 就是一段處理你按鍵盤後要幹嘛的程式碼
這段程式碼會知到目前腳色的一些狀態(like 站著 跑步 摔落中等等...
然後再做出反應(摔落中案跳會沒反應拉 跑步中鬆開按鍵會停下等等...

首先我來處理判斷"腳色是否站在地板上"的判定吧!
通常我們會利用物理引擎提供的碰撞檢測來檢測腳色是否站在地面上
而用的其實也不是普通的碰撞檢測這麼簡單
而是一個叫做"光線投射"(RayCast)的功能
簡單來說可以想像成你拿一支雷射筆射出一條雷射向地板下射
雷射筆會射在地板上出現一個光點
RayCast厲害得是你可以設定這條光要射多遠
他還會告訴你這條光他打到甚麼物體有沒有打到
連打中的座標都知道 (厲害ㄅ
這樣就可以知道腳色距離地面多遠 有沒有碰到地面了(多方便阿!
但是
RayCast也會造成一些問題
例如:

大家可能在某些遊戲看過類似的畫面
當腳色太靠近邊緣會造成判定上的問題
腳色的碰撞明明還在平台上但是RayCast卻打不到東西
這樣就會造成問題

如果要解決問題就要用RayCast的加強版"SphereCast"
這個SphereCast其實原理跟RayCast一樣
但不同之處是SphereCast投射的不是細細的光線 而是一顆又大又粗的
因為是發射出去把球的軌跡畫出來就會像一個膠囊狀


畫得好醜(´・_・`)
這樣就不會漏判定拉

內容也差不多了這篇先這樣ㄅ
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4266851
All rights reserved. 版權所有,保留一切權利

相關創作

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

留言共 9 篇留言

Daily
如果想看代碼的人夠多我再放代碼好了不然文章好長大家也看不懂

01-20 15:50

Xian
加油!

01-26 17:25

Daily
感謝
話說最近點忙可能第二篇會過很久才更01-26 19:17
我帥故我在
加油~期待你

01-31 08:39

Daily
感謝[e12]01-31 09:32

不好意思 小小搗亂一下 有的遊戲可以看到人物的兩條腿分別踩在高低差段不同的地形 比方說平地以及凸起的小石頭 那個是怎樣被實作出來的?

01-31 12:40

Daily
這個我後面會做哦
總之一步一步來慢慢再把遊戲打磨上去01-31 17:04
門禁
不好意思 想問一下SphereCast的參數是怎麼設定的呢?
我在做的時候碰上一個問題是角色的腳只要碰到Sphere的半徑他就會被判定是沒有接觸到地面

09-22 22:30

Daily
角色身上應該沒有其他碰撞框了吧? 大小可以看第2篇09-23 12:58
門禁
只有capsule 大小也有調過了不過還是一樣 還是說跟你用的sperecast有差別呢?
我是參考這個的
https://youtu.be/CoTK39SZft8

09-23 14:30

Daily
大概猜到為甚麼了
sperecast 會對自身的capsule起反應
要用LAYER MASK分開09-23 16:05
門禁
剛剛做了一些測試發現他是對模型本身起反應
看來不是capsule的問題 用了LayerMask也無法解決

09-23 20:33

Daily
如果方便的話可以提供檔案我找時間幫你看看09-23 22:39
門禁
真的嗎 太感謝了 我這邊才怕你不方便QQ
https://drive.google.com/open?id=11rtKPDeeWC9LAJjhcWF7hvxR114okMNE

09-23 23:20

Daily
稍微幫你看了下
遊戲邏輯不要寫在OnDrawGizmos中
OnDrawGizmos只有在圖標(Gizmos)更新的時候會觸發
而且正式輸出專案的時後OnDrawGizmos是不會被執行的
這樣問題很多 還是寫在常規的Update比較好
還有LayerMesk記得要設置
LayerMesk的邏輯是只跟選中的層互動
還有你寫在OnDrawGizmos裡面的邏輯
SphereCast射出設線的時候如果距離目標太近會產生漏過
把投射點提高 或是SphereCast的半徑縮小試看看09-24 15:30
Daily
https://imgur.com/QVdMSVz
頭射點高低差異
09-24 15:32
門禁
懂了 所以應該是投射點在transform.position的關係吧
OnDrawGizmos我是想說比較好看情況才寫在那 之後會改回去
很謝謝你的幫忙 我把你寫的這整個系列都看過了 很有幫助 希望能再寫下去

09-24 16:11

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

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

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

追蹤私訊切換新版閱覽

作品資料夾

aaa1357932大家
各位有空可以來我家看看畫作或聽聽我的全創作專輯!看更多我要大聲說17小時前


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

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