UE4 f3視角修正

2022-09-15 08:06:12 字數 2162 閱讀 8447

按之前的步驟做下來,有乙個小bug,當我們上下移動視角的時候,只是攝像機在旋轉,所以我們可能會看到一些奇怪的東西,比如發現自己沒腦袋

我們想要的效果是能夠讓 手臂跟隨著攝像機一起移動,也就是讓我們的模型「彎腰」。

首先在動畫藍圖的動畫圖表中右鍵輸入transform bone,

在骨骼中找到有關彎腰的三個關節。

用get control rotation來獲得我們控制器的旋轉值。

執行一下大概是這樣的。

p指的是我們上下的幅度,最高是90,最低是270.(平視時是0,當向下看時會從360開始減,一直減到270)

y指的是我們左右的幅度。r表示的是我們的順時針或逆時針的旋轉值(第一人稱中一直是0)

複製三份transform bone,分別指向spine_01,spine_02,spine_03,並且把rotation的rotationmode改成add to existing,表示將輸入的值新增到原有旋轉值上。

(translation 和 scale 用不到,可以先關掉。)

用乙個變數spine rotation表示旋轉值。

在動畫藍圖的事件圖表中新增乙個改變spine rotation值的方法。

說明,因為彎腰只改變乙個軸,所以其餘兩個軸設為與之前的一樣。

注意點一,在動畫藍圖中經過測試,當改變x(roll)時才會改變人物的彎腰狀態。而get control rotation中,通過第一次的列印測試,發現y(pitch)才是控制器中控制彎腰的軸。

所以要把control的y(pitch)賦值給 spine rotation的x(roll)。

注意點二,經過列印測試,當我們抬頭時,控制器的y(pitch)是從0到90的,低頭時是從360到270的。而在動畫藍圖中,x填為正值時是彎腰,負值時是抬頭。這又是不一樣的地方。

所以做乙個判斷,如果》180說明我們正在低頭,獲得(360-當前y值)。<180說明我們在抬頭,直接乘乙個負一。

注意點三,因為我們是同時旋轉了三個關節才實現的彎腰抬頭,所以我們處理後的值必須/3才能賦給spinerotation。比如說我們抬頭抬到最大90,也就是每個關節最大30。

新增腳部動畫

首先建立乙個2d的混合空間(乙個軸表示速度,乙個軸表示方向)

速度設為20個格仔,方向設為8個格仔

在速度為360的數軸上新增run的各個方向的動畫。這裡還新增了乙個衝刺動畫和乙個靜止動畫。

把這個混合空間拖到unarmed_idel/run中。

因為我們只想讓腿動,所以我們需要乙個骨骼的分層混合。

注意左面的設定,從spine_01開始混合(作為區分上下身的標誌),還要把mesh space rotation開啟。

複製上半部分到每個狀態中( jump可以不做,因為跳起的時候腳是不動的)

用乙個封裝好的函式,calculate direction獲得-180到180的方向值。並傳入相應的引數。

視角限制

學習UE4 將視角設定到相機

在公司做了三個月前端,幫忙做c 去了,剛做1周,負責人出差,這事就落我頭上,大半年過去了,專案也差不多了,老闆讓我學ue4,剛學1周,唯一會ue4的人被勸退了,專案又落我頭上,我好難。學的時候發現學了就忘,所以寫部落格主要是加深自己的理解,有的地方可能有錯誤,不過我應該寫不了幾篇,因為老闆有讓我再去...

UE4 VR學習筆記3

今天嘗試了乙個無限空間玩法,傳統的遊戲一般都是用空氣牆在邊界阻擋玩家,這種方式會讓玩家覺得有一點限制,不夠自由,另外一種是使用隨機地圖生成的功能,這樣也能做到無限自由空間,不過這有點費電腦。大家都知道vr是非常注重空間自由度體驗的,用空氣牆的方式,阻擋玩家顯然有點不合適。而vr本來就對電腦配置要求很...

UE4 C 網路聯機基礎(3)

如果伺服器需要對客戶端廣播執行乙個函式可以使用ufunction netmulticast 因為gamemode只在伺服器中執行,所以通常這種廣播執行可以在gamemode中指定gamestate來呼叫該函式 實現伺服器廣播客戶端執行。gamemode中獲取gamestate方法 amygamest...