在第三人稱視角下,動畫的瞄準(zhǔn)偏移如果是直接使用控制器的旋轉(zhuǎn)值,會出現(xiàn)較大的視覺誤差(近距離與遠(yuǎn)距離切換時沒有差別)。我們需要做的就是使瞄準(zhǔn)偏移量(Yaw,Pitch)能夠瞄準(zhǔn)屏幕中心所瞄準(zhǔn)的點(diǎn)。
項(xiàng)目Demo源文件百度云盤
FindLookAtRotation節(jié)點(diǎn)
藍(lán)圖節(jié)點(diǎn)
C++:
FRotator UKismetMathLibrary::FindLookAtRotation(const FVector& Start, const FVector& Target)
起始坐標(biāo)的獲?。?/h4>
一般在持槍狀態(tài)下值為槍的大概位置。本文簡單起便直接使用當(dāng)前角色的世界坐標(biāo),直接GetActorLocation就可以了。

藍(lán)圖節(jié)點(diǎn)
目標(biāo)坐標(biāo)的獲?。?/h4>
通過攝像機(jī)發(fā)射光線追蹤,撞擊到目標(biāo)得到世界坐標(biāo)。

關(guān)鍵實(shí)現(xiàn):
角色藍(lán)圖
在角色藍(lán)圖更新瞄準(zhǔn)偏移的原始值

值

計(jì)算光線追蹤的起始點(diǎn)與結(jié)束點(diǎn)

動畫藍(lán)圖

限制值的最大值最小值,并使用插值平滑過渡。

如果是攝像機(jī)沒有碰撞到物體,則使用控制器的旋轉(zhuǎn)值

關(guān)于FindLookAtRotation的起始點(diǎn)需要微調(diào)。