iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0

今天來製作最後一個魔法攻擊,一個從天而降的制裁魔法(應該

1. Code

ProjectileBase 裡新增一個應用設定的功能,因為我後來才發現,在外面設置的數值不會被應用到 Projectile Component 上,因為是先 Spawn 後才設定的,原本只有在 BeginPlay() 裡設置,但在 MagicWeapon 呼叫的時候 BeginPlay 都結束了。

void AProjectileBase::ApplyProjectileSettings()
{
    if (!ProjectileComp) return;
    
    ProjectileComp->InitialSpeed = InitialSpeed;
    ProjectileComp->MaxSpeed = MaxSpeed;
    ProjectileComp->ProjectileGravityScale = GravityScale;

    ProjectileComp->bIsHomingProjectile = bIsHoming;
    ProjectileComp->bRotationFollowsVelocity = bIsHoming;

    ProjectileComp->UpdateComponentVelocity();
}
  • MagicWeapon
// MagicWeapon.h
UFUNCTION()
virtual void Shinbatsu();

// MagicWeapon.cpp
void AMagicWeapon::Shinbatsu()
{
    if (!Magics[2]) return;
    
    FVector SpawnLoc;
    if (OwnerChar->TargetActor)
        SpawnLoc = OwnerChar->TargetActor->GetActorLocation() + FVector(0, 0, 1000);
    else
        SpawnLoc = OwnerChar->GetActorLocation() + OwnerChar->GetActorForwardVector() * 1000 + FVector(0, 0, 1000);
    
    AActor* ProjActor = GetWorld()->SpawnActor<AActor>(Magics[2], SpawnLoc, FRotator(-90,0,0));
    if (AProjectileBase* Projectile = Cast<AProjectileBase>(ProjActor))
    {
        Projectile->Damage = Damage*3;
        Projectile->bIsHoming = false;
        Projectile->GravityScale = 2.0f;
        Projectile->MaxSpeed = 2000;
        Projectile->InitialSpeed = 1500;
        Projectile->ApplyProjectileSettings();
    }
}

2. 新增魔法投射物 (Strike) 並設置

新增投射物 Actor 並添加 BoxCollision 與 Mesh 之後,兩者的 Collision 要做修改

  • Box Colliision
    https://ithelp.ithome.com.tw/upload/images/20251012/201710363bwb5QE1YT.png

  • Static Mesh
    https://ithelp.ithome.com.tw/upload/images/20251012/20171036MdRB5hFOtN.png

  • 然後 Projectile Component 的 Sweep Collision 要打勾,不然物件會直接穿牆。

  • 以及 Anim Montage 的 Notify State 也要設置要執行的 void 名稱
    https://ithelp.ithome.com.tw/upload/images/20251012/20171036CoSvj282jY.png

  • 撞到地板後的範圍傷害就直接在 Strike Blueprint 裡做了
    https://ithelp.ithome.com.tw/upload/images/20251012/20171036vp67zGX0JE.png

  • 最後再加進 Magic Book 裡的 Magic 陣列

完成!!11!!1!1


上一篇
# Day 27|魔法攻擊 (二)
系列文
30 天用 Unreal Engine 5 C++ 開發遊戲28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言