切換
舊版
前往
大廳
主題

亂七八糟的_遊戲開發誌[7] 腳色轉向

Daily | 2019-02-03 19:25:05 | 巴幣 4 | 人氣 555

上回我們介紹了攝影機的實作
當然攝影機絕對沒有這麼簡單的 有很多功能我們都沒有談到
之後我還會再寫幾篇進階攝影機的內容 會介紹攝影機碰撞 鏡頭搖晃 瞄準等等

這篇先來修正上回最後提到的
"腳色不會隨攝影機轉向吧"
因為這個主題的內容可能會比較少 算是緩和一下上一篇的折磨
因為這篇抽象概念很多比較難用圖片表達 有不懂得可以留言問我

正常來說我們完遊戲 按下"前進"時
我們會希望腳色往攝影機看的方向前進
而不是腳色自身的前方 更不是世界空間的前方
紅色是我們想移動的方向 黑色的是腳色座標

所以我們要來修改 腳色控制器
修改內容不會太複雜
上次我們稍微介紹了搖桿輸入(第[3]期連結)
我們有了搖桿輸入的XY
只要把這個輸入向量稍微轉換一下就可以了

在腳色控制器中我們還要知道攝影機的相關資料(攝影機拍攝的方向)
我們可以用Camera.main.transform來取得攝影機資料
這邊要注意Camera.main.transform在unity內部其實是用 Find()方法取得攝影機的
所以請避免每幀執行他 你可以把它暫存起來

因為要向攝影機正前方移動我們要把垂直輸入的向量*攝影機的前方
也就是說
我們的輸入向量和是不符合遊戲裡面的方向的  
但單獨來看X軸與Y軸的"值"是沒問題的//這裡的值是指你案的多少的前後與左右
而攝影機機的方向在遊戲的世界空間中是正確的//攝影機的forward值是我們希望腳色前進的方向
所以就可以把X軸乗上攝影機的forward //如果X軸等於1就會回傳攝影機的forward反之亦然
這樣就可以控制腳色在世界中移動時依照攝影機的方向移動
Y軸也一樣乗上攝影機的Right 就可以讓腳色往攝影機的左右移動
再把兩個向量相加就可以完成移動向量的轉換
最後別忘了設影機有俯仰會影響移動座標 可以把修改後的輸入值的Y改成0
但這樣也會造成俯視與仰視時移動會變慢
不想要變慢可以先修改攝影機向量

這邊牽扯了很多向量運算得概念 希望你還撐得住
如果聽不懂可以留言給我 我再看看要不要單獨寫一篇文章

腳色面向
接著處理腳色面向的問題
我們會希望腳色移動時面相移動的方向
可以直接修改腳色transform.forward來改變轉向
直接把剛剛修改過的輸入向量帶入就好了(可以自己加Lerp)

最後就放個到目前為止的試玩吧!

Web試玩 (PC限定,支援手把)

WASD 空白鍵跳 滑鼠視角
L類比移動 A跳 R類比視角(XBOX手把)


好了!做到現在遊戲也漸漸成形了
雖然離完成還有很長一段路
但是我現在還是沒有決定好到底要做什麼樣的遊戲  乾脆安價好了
又想到甚麼系統或是有想要提供意見的
歡迎留言給我喔

送禮物贊助創作者 !
0
留言

創作回應

更多創作