在今天學習的剛開始,我一直在思考
1.GetAxis和GetAxisRaw到底差在哪,查詢資料過後目前得到這個結果:
GetAxis函數回傳的值是經過平滑處理的,他在一定時間內將當前的輸入值平滑地過渡到目標值上,使得輸入的變化更加自然(通常用於角色移動)(數值落在-1~1之間,有小數)
GetAxisRaw則是回傳未經處理的輸入值,他會立即回傳輸入的當前值,而不會管前一個輸入,代表輸入值變化時會立即回傳新值,通常用於需要快速反應的輸入(按下按鈕或人物圖片左右朝向判定)(數值只有1,0,-1)
2.Update與FixedUpdate的差異
Update是每一幀的時候更新,但更新的頻率會受使用者設備以及渲染的物體影響,而FixedUpdate是在固定的時間間隔執行,不受幀率影響,所以通常處理Rigibody會使用FixedUpdate
3.Time.deltaTime是什麼?
中文名稱叫做增量時間,為完成上一幀所用的時間(單位:秒)由於每個設備運行遊戲的幀數有高有低,所以為了讓每秒角色移動皆為固定的值,所以要把數字乘上Time.deltaTime,例如:一秒30幀則增量時間為1/30秒,一秒60幀則增量時間為1/60秒,而角色移動的距離為速度X時間(增量時間X一秒總幀數)
4.偵測人物臉部朝向的程式碼(註解打在程式碼後面)
5.角色跳躍
6.動畫效果
在Player這個物件中新增Animator功能,之後在assets的資料夾中建立animation的資料夾,裡面再創建Player的資料夾並新增animator contriller,再把它拖曳到Player物件的animator(如下圖)
接著在window選擇animation->animation
在animation新建一個idle資料夾並把idle(人物站立)的四個動畫拖曳過去,把sample rate調整到10
,接著用同樣的方法新增跑步的六個動畫,並檢查idle與run的動畫loop time有沒有打開(因為動畫需要重複出現)
如何讓idle與run動畫相互替換
到animator裡面idle跟run點右鍵make transition來回連起來!
並在animator找到parameters新增float參數命名為running,用來判斷切換idle與run動畫的條件,
如果running數值大於0.1則轉換成run,小於0.1則回到idle(我們兩個動畫都不需要退出與轉換的時間所以把has exit time取消勾選,transition duration設置為0)
接著回到腳本寫控制動畫的參數
新增一個變數public Animator anim;用來存放animation controller
這行程式碼的功能是把剛剛設的參數running隨著偵測臉朝向的變數更動(選這個是因為只有1,-1,0三種)
而Mathf.abs為取絕對值(為了往左移動的時候不要出現負數)
目前進度:角色跳躍和站立與奔跑的動畫切換
心得:今天做出的進度比較沒那麼多,但知識點巨多!要好好消化一下
展示影片:https://www.youtube.com/watch?v=4EPFwTfCffE&ab_channel=%E7%91%9E%E7%91%9EciGuitar
BTW:不知道為什麼用原本的方法貼YT影片一半以上的文章會被吃掉,所以改純貼連結!!有知道的朋友也可以留言告訴我~~感恩