技術共有

UEC Unreal 5 サードパーソン シューティング ゲーム (2)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

UEC++ Unreal 5 サードパーソン シューティング ゲーム (2)

派生手榴弾武器

  • から継承した新しいものを作成するWeapon派生手榴弾武器としてのサブクラス
    ここに画像の説明を挿入します
  • 意思WeaponクラスでFire機能追加virtualキーワードは仮想関数となり、手榴弾クラスを継承して書き換えることができます。
    ここに画像の説明を挿入します
  • 存存存在するするするProjectileWeapon中程度の書き換えFire関数、発射物を生成するための新しいテンプレート変数を作成します
    ここに画像の説明を挿入します
  • Fire関数書き換えロジック
    ここに画像の説明を挿入します
  • コード
	//生成的投射物
	UPROPERTY(EditAnywhere,BlueprintReadOnly,Category = "ProjectileWeapon")
	TSubclassOf<AActor> ProjectileClass;
//--------------------------------------------------------------------------------------------------
void AProjectileWeapon::Fire()
{
   
	AActor* MyOwner = GetOwner();
	if (MyOwner)
	{
   
		FVector EyeLocation;
		FRotator EyeRotation;
		MyOwner->GetActorEyesViewPoint(EyeLocation, EyeRotation);

		FActorSpawnParameters SpawnParams;
		//设置投射物生成参数:即使生成位置有碰撞,也要强行生成投射物,不进行碰撞检测处理
		SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
		//获取枪口位置
		FVector MuzzleLocation = SkeletalComponent->GetSocketLocation(MuzzleSocketName);
		//生成并发射投射物
		GetWorld()->SpawnActor<AActor>(ProjectileClass, MuzzleLocation, EyeRotation, SpawnParams);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

派生手榴弾のような武器

  • 派生手榴弾クラスのブループリントを作成し、それにメッシュ モデルを追加します。
    ここに画像の説明を挿入します
  • グリッド モデルのスロット名を us に変更します。C++で定義された名前
    ここに画像の説明を挿入します
  • 作成するActorブループリントを弾丸として使用し、ランチャーと球体メッシュを追加します。ランチャーの初速と最高速度は 2000 に設定され、弾丸の反発エフェクトがオンになります。球メッシュにより物理シミュレーションが可能になります。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
  • ブループリントにスポーン弾を露出させる発射物を生成する手榴弾武器のブループリントを追加しました。
    ここに画像の説明を挿入します
  • キャラクター ブループリントで、インスタンスの武器タイプを榴弾砲武器に変更し、次にインスタンスのオブジェクトを親クラスの武器に変更します。これにより、関数を呼び出すときに問題をテストしやすくなります。
    ここに画像の説明を挿入します
  • Bullet ブループリントに爆発イベントを追加し、ロジックを記述します
    ここに画像の説明を挿入します
  • 存存存在するするするBeginPlay論理イベントは次の場所で呼び出されます。
    ここに画像の説明を挿入します
  • 演算結果
    画像の説明を追加してください

スナイパーのズームブースト効果

  • 文字クラスに 4 つの新しい変数を作成します。1 つはズームの進行を有効にするために使用され、1 つはズームの視野範囲を示すために使用され、1 つはデフォルトの視野の範囲を取得するために使用され、もう 1 つはズームの速度を表すために使用されます。新しい視点への線形補間。
    ここに画像の説明を挿入します
  • 右クリック操作入力を新規作成する
    ここに画像の説明を挿入します
  • 右クリック操作の処理関数を新規作成
    ここに画像の説明を挿入します
  • 新しい移動角度と移動補間速度を割り当てます。
    ここに画像の説明を挿入します
  • 存存存在するするするBeginPlayデフォルトの視野角範囲を取得します
    ここに画像の説明を挿入します
  • 「バインド関数ロジック」を右クリックし、「新規パースペクティブ線形補間範囲ロジックを設定」を選択します。
    ここに画像の説明を挿入します
  • バインド入力操作
    ここに画像の説明を挿入します
  • エンジンに新しい操作入力を作成し、マッピングに追加します。
    ここに画像の説明を挿入します
    ここに画像の説明を挿入します
  • オペレーションをキャラクター ブループリントにバインドする
    ここに画像の説明を挿入します
  • 演算結果
    画像の説明を追加してください

コンソール変数を作成する

  • 武器クラスに射撃やライン描画の有無を制御する制御コンソール変数として静的変数を新規作成し、自動管理コンソール変数クラスを新規作成
    ここに画像の説明を挿入します
  • FAutoConsoleVariableRef: コンソール変数を自動的に管理するクラス
FAutoConsoleVariableRef ACVRDebugWeaponDrawLine(TEXT("COOP.DebugWeapons"), DebugWeaponDrawLine,TEXT