iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0

今天整理一下程式及新增一些小細節。

1. 縮短一點程式

EnemyDummyCharacter.cpp

// .h
UFUNCTION(BlueprintCallable, Category = "Attack")
virtual void DoAttackAnim(USceneComponent* weapon, float curveX, float curveY, float rotatorX, float rotatorY, FVector
                            initLocation, FRotator initRotator, float locXscale=50, float locYscale=140, float rotXscale=-90, float rotYscale=80);
// /cpp
void AEnemyDummyCharacter::DoAttackAnim(USceneComponent* weapon, float curveX, float curveY, float rotatorX, float rotatorY, FVector
                                initLocation, FRotator initRotator, float locXscale, float locYscale, float rotXscale, float rotYscale)
{
	float locX = curveX*locXscale + initLocation.X;
	float locY = curveY*locYscale + initLocation.Y;
	weapon->SetRelativeLocation(FVector(locX, locY, initLocation.Z));

	float rotX = rotatorX*rotXscale;
	float rotY = rotatorY*rotYscale;
	weapon->SetRelativeRotation(FRotator(rotY, initRotator.Yaw, rotX));
}

加進藍圖裡:
https://ithelp.ithome.com.tw/upload/images/20251005/20171036jIuJv4I06L.png

2. 增加玩家物理受擊動畫

這裡使用物理的方式模擬物理衝擊 Apply Impulse 來製作被打的樣子,通常是用在子彈後座力或被擊中的時候。

在 Components 新增 Physical Animation
https://ithelp.ithome.com.tw/upload/images/20251005/20171036OGvwh4iRve.png

定義哪些骨頭會被模擬,以及設定模擬的旋轉、速率、位置的回正力度。
https://ithelp.ithome.com.tw/upload/images/20251005/20171036mn5QKwK34D.png

被攻擊後 Apply 相機晃動、HP扣減、衝擊動畫。
使用 HitResult 的衝擊點與玩家位置相減,Normalize之後乘-1再乘上衝擊力度。
https://ithelp.ithome.com.tw/upload/images/20251005/20171036hxymBHerZf.png

結果

這就有了可信的受擊動畫,還不用自己K動畫


上一篇
# Day 20|敵人 AI (三) & 玩家血條
系列文
30 天用 Unreal Engine 5 C++ 開發遊戲21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言