iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0
自我挑戰組

從零開始學習Unity引擎系列 第 16

unity學習day16--角色的移動與重力系統

  • 分享至 

  • xImage
  •  

一. 角色移動

經歷了漫長的學習之後終於可以開始控制角色了,我們真正在做遊戲的時候要解決角色移動有三種方案,第一種就是在應用商店下載角色控制的系統,裡面的系統很豐富而且很完善,第二種的就是如果要求不高的話,可以用unity提供的控制器,第三種則是在我們學完物理系統之後自己去做控制器。今天就選擇第二種來進行角色控制。

創建一個平面讓人行走,和一個膠囊當做人物,並且給膠囊命名“Player”,再給它加上“Character controller”,這裡可以看到很多欄位,要怎麼用它們呢?
https://ithelp.ithome.com.tw/upload/images/20250918/20178373B9cKcItG7G.png

建立一個空腳本“PlayerControl”,把腳本掛上膠囊。進入腳本後首先要得到它的元件,用player來獲取元件。
https://ithelp.ithome.com.tw/upload/images/20250918/20178373ICSovso8il.png

接下來宣告水平軸和垂直軸的變數,並且創建方向向量,控制它的移動,並把Z軸設為0讓它只在平面上移動,最後畫出一條線來判斷方向是否正確。
https://ithelp.ithome.com.tw/upload/images/20250918/20178373lEpoW6r5sg.png

可以看到確實跑出來一條線,這代表移動的方向是沒錯的,並且可以斜向移動,接下來就可以正式的開始移動。
https://ithelp.ithome.com.tw/upload/images/20250918/20178373uM0L3qmB9B.png

其實用Move方法就可以了,SimpleMove是帶有重力的移動,也就是跑到平面的邊緣或落下去,而後面的dir是可以做乘法來控制速度的。
https://ithelp.ithome.com.tw/upload/images/20250918/20178373IDQ6M4mQoQ.png

這裡可以看到,圓柱體確實落下了。
https://ithelp.ithome.com.tw/upload/images/20250918/20178373KIcApIo2UQ.png

二. 重力系統

不管玩什麼遊戲基本都會受到重力的影響,槍戰遊戲丟手雷,或是跑酷遊戲的自由落體,接下來我將介紹關於重力的特性。

先創建一個平面,放到世界的原點,並且建立一個球體,放在平面上,不過該怎麼讓球體受到重力影響?即便把球體放高一點,運行之後的球體是不會下落的,不夠只有給它添加一個“Rigidbody”的元件,它就會立刻往下掉。
https://ithelp.ithome.com.tw/upload/images/20250918/20178373m2HUH7uIkK.png

還是同一張圖,看看上面的欄位,從上往介紹幾個比較重要的

  • 線性阻尼:從上往下收到空氣阻力的影響,阻力越強,下降越慢。
  • 角阻尼:旋轉時的阻力,阻力越強,旋轉越慢。
  • 使用重力:決定物體是否受重力影響,如果不收重力影響的話任然受到物理運動影響。
  • 為運動:決定物體是否受物理運動影響,如果不受的話就會像一塊“石頭”一樣,不會被其他物體擠開或是被重力拖下去。
  • 碰撞檢測-離散:這是比較節能的一種方法,非連續檢測,只不過如果是高速的物體,譬如說子彈這種就無法檢測到,如果想要檢測到高速運動的物體,最好的方式就是把地面設成“連續檢測”,高速物體改成“連續動態”,只是這樣比較消耗性能。
    https://ithelp.ithome.com.tw/upload/images/20250918/20178373NBSpp50Ip5.png

上一篇
unity學習day15--聲音與影片
下一篇
unity學習day17--碰撞與觸發
系列文
從零開始學習Unity引擎19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言