Unity人物跳躍效果

2022-06-16 19:51:07 字數 1525 閱讀 4852

最近在做乙個小遊戲,需要實現人物的跳躍效果。自己從簡單到複雜,把目前比較好的方法都試了一遍,這裡簡單總結一下。

1.直接使用動畫位移

2.使用剛體元件加作用力

這個其實就是利用unity的剛體元件,模擬真實的物理效果。在跳躍的時刻給物體新增乙個向上的瞬時作用力,這樣就能模擬跳躍的效果。這個使用場合還是很多的。但是也有毛病,剛體模擬跳躍還需要勾選重力(當然也可以給物體乙個向下的恒力),但是大多數情況下我們是不需要重力的,而且使用物理會消耗更多資源(相比指令碼)。這個網上也有很多例子,一行**搞定,不詳細介紹。

3.自己寫指令碼模擬跳躍

這個是應用場景最多的方式。簡單的,可以定義跳躍的時間和高度,然後開協程每幀更新物體的高度,這樣就能實現跳躍,具體見下面**。但是這種跳躍是線性的,無法模擬真實跳躍,更加無法實現自定義跳躍的曲線。

1

public

int jumptime = 30;2

public

int falltime = 20;3

public

float jumpheight =1f;

4void

jumpforseconds()58

9ienumerator jumpforseconds()

1019 time =falltime;

20 speed = -jumpheight /falltime;

21while(time>0)22

27 }

4.使用animationcurve

這裡只介紹簡單的使用方法。animationcurve是unity視覺化的曲線模擬元件,需要在掛載的指令碼中public宣告乙個animationcurve型別的變數,如public animationcurve jumpcurve; 此時可以發現inspector檢視中指令碼多出來乙個

單擊後面的編輯框即可開啟編輯介面,開啟後如圖

在這裡可以編輯你想要的曲線型別,跳躍就是簡單的拋物線,你也可以自定義任何型別的曲線。具體如何編輯曲線,可以檢視官方文件寫的十分詳細。吐槽一下這裡的曲線只能用定義關鍵幀的方式來畫,並沒有預定義好的曲線。如果能做成matlab那樣強大就好了,當然也可能是遊戲中其實不需要那麼複雜的曲線。

接下來如何使用這條曲線呢,其實你可以把剛才定義的變數jumpcurve理解為這條曲線,它提供了很多方法,最常用的就是evaluate函式,這個函式引數為x,返回y值,也就是你可以根據橫軸任意一點得到曲線上的某一點。在跳躍的例子中,橫軸就是時間,縱軸就是高度,那麼我們稍微修改一下方法3,高度由這個曲線每幀獲取,然後定義物體高度就可以了。  

1

void

jumpforseconds()25

6ienumerator jumpforseconds()

721 }

順便再多說一點,這個animationcurve十分強大,像道路生成、運動軌跡等都可以使用。

unity跳躍按鈕 Unity人物跳躍效果

最近在做乙個小遊戲,需要實現人物的跳躍效果。自己從簡單到複雜,把目前比較好的方法都試了一遍,這裡簡單總結一下。1.直接使用動畫位移 2.使用剛體元件加作用力 這個其實就是利用unity的剛體元件,模擬真實的物理效果。在跳躍的時刻給物體新增乙個向上的瞬時作用力,這樣就能模擬跳躍的效果。這個使用場合還是...

Unity3d 人物跳躍後落地懸空問題

人物在檢測到跳躍事件後,給乙個初始速度v 0v 0 v0 根據重力加速度g gg和時間差t tt,計算出當前人物的速度為 v v 0 g tv v 0 g t v v0 g t。在當前呼叫的 t t t時間內,位移為 y v t y v t y v t。檢測是否落地採用了physics.capsul...

unity人物移動

建議使用以下做法 給人物加character controller,然後在指令碼中獲取人物的角色控制器 charactercontroller character fighter.getcomponent fighter是人物對應的gameobject物件 然後利用character移動,例如控制角...