魔法弾や矢などに使うプロジェクタイル(Projectile)の基本設定。Baseさえ作れば、子ブループリントで簡単に様々なパターンを作れます。
スパイダーマンを買わずにオリジナルVRゲームの開発。
VRだとちょっとした仕掛けでもプレイするとそれなりの体験に感じる。
テストプレイでも楽しい遊び場。 pic.twitter.com/XGQty8jzUN— ハマーキーUE (@Hummerkey_UE) October 20, 2023
魔法弾のエフェクトはInfinity Blade:Effectsが無料です。
Infinity Blade:Effects:Epic コンテンツ | UE マーケットプレイス
Actor
親クラス: Actor
名前: BP_Projectile_Base
Box Collision
名前はBoxよりもBoxCollisionのほうがわかりやすい。
Static Mesh
ParticleSystem
Projectile Movement
コンポーネントにProjectile Movementを追加。
変数の追加
Speed – Float ※デフォルト値は500
MaxSpeed – Float ※デフォルト値は500
Gravity – Float
Target – Actor
IsHoming? – Booleam
この5つの変数の詳細で、「インスタンス編集可能」と「スポーン時に公開」にチェックを入れます。
Projectileの基本設定になりますから、カテゴリーもProjectileSettingsなどにしてまとめておくとわかりやすいです。
イベントディスパッチャーの追加
OnProjectileImpact
├インプット: OtherActor – Actor
└インプット: Hit – Hit Result
コンストラクションスクリプト

・Projectile Movementから線を伸ばしてSet Initial SpeedとSet Max SpeedとSet Projectile Gravity Scale。
・TargetはGet→検証済ゲットで配置します。
イベントグラフ

【変数】
LaunchSound – Sound Base
└Play Sound at LocationのSoundから線を伸ばして変数へ昇格。カテゴリーをSoundsにしておく。
・TargetはGet→検証済ゲットで配置します。

【変数】
ImpactEffect – Particle System
└Spawn Emitter at LocationのEmitter Templateから線を伸ばして変数へ昇格。カテゴリーをEffectsにしておく。
ImpactSound – Sound Base
└Play Sound at LocationのSoundから線を伸ばして変数へ昇格。カテゴリーをSoundsにしておく。
例:魔法弾 Actor(子)
例として魔法弾っぽい玉を作ります。
BP_Projectile_Baseから「子ブループリント クラスを作成します」で作成。
ParticleSystem
BoxCollisionの詳細の、
形状 > Box Extentを魔法弾の大きさに合わせる。これが当たり判定になります。
位置を合わせる時は、ParticleSystemのほうを動かして合わせます。BoxCollisionの位置は固定。
Impact Effect
Launch Sound
発射時の音をセットする。
Impact Sound
例:発射台 Actor
2秒毎に魔法弾を撃つ発射台です。
親クラス: Actor
名前: BP_ProjectileShooter
Static Mesh
コンポーネントにStatic Meshを追加。
詳細のStatic Meshは適当でいいですけど、とりあえずCubeをセットします。
砲台みたいなStatic Meshを持っていれば、それを使ってください。
Scene
Static Meshの子にSceneを追加。名前をShootPointにします。
このSceneの位置からX軸方向に弾が出ます。
配置した時の方向をわかりやすくしたいならArrowも追加しておきましょう。

・カスタムイベントの名前をDamagePlayerにしていますが、Enemyにもダメージが入ります。
・ここでは一般的なApply Damageに繋げていますが、私は独自仕様のブループリントインターフェースであるBPI DamagableのTake Damageを使います。
例:プレイヤーの攻撃 BP_Player
Scene
発射台と同じく、コンポーネントにSceneを追加。名前をShootPointにします。
このSceneの位置からX軸方向に弾が出ます。
イベントグラフ

・クラスからアクタをスポーンしますでBP_ProjectileMagicBallがスポーンされて、Shoot Pointの向きに発射されます。ヒットするとBP_Projectile_Baseで設定したディスパッチャーのOnProjectileImpactが呼ばれて、OnProjectileImpacにバインドしてカスタムイベント DamageEnemyが動きます。
・ここでは一般的なApply Damageに繋げていますが、私は独自仕様のブループリントインターフェースであるBPI DamagableのTake Damageを使います。
コメント
Outstanding feature