那麼今天來試著弄出用"空白建"控制物件跳躍的腳本內容吧!
那之前因為都是平面移動,所以我是想著改變座標就好,其實跳躍也是可以改變Y座標數值
再把增加的數值,慢慢減少到原本的數值,來產生方塊落下的感覺,這始終不是最一般的做法,Unity有提供物理計算引擎,可以產生重力讓物件自己往下掉,但我們的場景編輯區目前也沒有地面,如果我們的方塊產生重力了,就會無限往下掉,所以要先新增地面物件。
那我們的方塊落下,會跟地面產生碰撞,遊戲裡的各個物件也都會彼此碰撞,所以我們要設定他們在物件屬性檢視區的"Collider"屬性。
那接著要給予重力模擬,將要給予重力的物件添加"Rigidbody",就可以發現我們的物件有重力了。
而我們的方塊因為有了重力,所以在離開地面時,Y座標會不斷減少,隨著物件落下,不斷地改變座標值。
而接著只需要在添加Y座標的程式,就可以製造出跳躍的感覺了。
if (Input.GetKeyDown(KeyCode.Space))
{
transform.localPosition += new Vector3(0, 100, 0) * Time.deltaTime;
}
那根據給予要增加的Y座標數值會有不同的跳躍高度,實際弄出來之後就有跳起來的感覺了。
而這次會用"Input.GetKeyDown()"來判斷是因為跳躍是想按一下跳一下,而非一直按著就一直往上飛了
那實際結果大概就是這樣
那仔細看可以發現有幾次跳躍會產生方塊滾動的情況發生,這是因為重力模擬的影響產生角度的傾斜
如果不希望物件在跳躍時有這種情況發生,我們可以從Rigidbody裡面將Rotation的坐標軸鎖起來。
鎖住之後,物件"Rotation"的數值就不會因為重力而改變,也就是物件不管傾斜的多嚴重,始終不會倒掉,因為物件的角度就已經是固定的了。