iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
自我挑戰組

Unity 自主研究學習系列 第 27

Unity自主學習(二十七):物件跳躍

那麼今天來試著弄出用"空白建"控制物件跳躍的腳本內容吧!
那之前因為都是平面移動,所以我是想著改變座標就好,其實跳躍也是可以改變Y座標數值
再把增加的數值,慢慢減少到原本的數值,來產生方塊落下的感覺,這始終不是最一般的做法,Unity有提供物理計算引擎,可以產生重力讓物件自己往下掉,但我們的場景編輯區目前也沒有地面,如果我們的方塊產生重力了,就會無限往下掉,所以要先新增地面物件。
https://ithelp.ithome.com.tw/upload/images/20210927/20140176AM3xTQcNli.png
那我們的方塊落下,會跟地面產生碰撞,遊戲裡的各個物件也都會彼此碰撞,所以我們要設定他們在物件屬性檢視區的"Collider"屬性。
https://ithelp.ithome.com.tw/upload/images/20210927/20140176c789ALkymh.png
那接著要給予重力模擬,將要給予重力的物件添加"Rigidbody",就可以發現我們的物件有重力了。

Yes
而我們的方塊因為有了重力,所以在離開地面時,Y座標會不斷減少,隨著物件落下,不斷地改變座標值。
而接著只需要在添加Y座標的程式,就可以製造出跳躍的感覺了。

if (Input.GetKeyDown(KeyCode.Space))
        {
            transform.localPosition += new Vector3(0, 100, 0) * Time.deltaTime;
        }

那根據給予要增加的Y座標數值會有不同的跳躍高度,實際弄出來之後就有跳起來的感覺了。
而這次會用"Input.GetKeyDown()"來判斷是因為跳躍是想按一下跳一下,而非一直按著就一直往上飛了
那實際結果大概就是這樣
Yes
那仔細看可以發現有幾次跳躍會產生方塊滾動的情況發生,這是因為重力模擬的影響產生角度的傾斜
如果不希望物件在跳躍時有這種情況發生,我們可以從Rigidbody裡面將Rotation的坐標軸鎖起來。
https://ithelp.ithome.com.tw/upload/images/20210927/20140176pvfIASnJ6T.png
鎖住之後,物件"Rotation"的數值就不會因為重力而改變,也就是物件不管傾斜的多嚴重,始終不會倒掉,因為物件的角度就已經是固定的了。


上一篇
Unity自主學習(二十六):物件移動(5)
下一篇
Unity自主學習(二十八):Time.deltaTime
系列文
Unity 自主研究學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言