Choose your operating system:
Windows
macOS
Linux
プレイヤー、敵、またはオブジェクトに対し何らかのダメージを与えるゲームを制作中であれば、何かにヒットされるのか、その場合実際何がヒットするのか、衝撃点、または検知されたヒットに関するその他の情報の判断が必要になるかもしれません。OnHit Event はコリジョン発生時にこうした情報を提供します。こうしたデータを使用してヘルスに及ぼす影響、オブジェクトの破壊、またはその他のゲームプレイ関連のアクションなどゲーム進行の変更を操作できます。
実装ガイド
このガイドでは OnComponentHit と Event Hit の イベント を使って被破壊メッシュにダメージを与えて破砕します。また、ヒット位置に推進力を適用し被破壊物をプッシュして、発射物によってヒットされるエフェクトをシミュレーションし、ヒット位置に力を適用します。
手順
このチュートリアルでは スターター コンテンツ を有効にした状態で Blueprint First Person テンプレートを使用します。
-
コンテンツ ブラウザ のプロジェクトで、 「Content/Geometry/Meshes」 フォルダに進みます。
-
1M_Cube スタティックメッシュで 右クリック して、 Create Destructible Mesh を選択します。
このスタティックメッシュから被破壊メッシュを作成して、撃たれたときにそれを破砕し、粉々になるようにします。
-
[Destructible Mesh] エディタ内で [Fracture Mesh] ボタンをクリックして、次に 保存 してウィンドウを閉じます。
-
新規作成した Destructible Mesh アセットを 右クリック して、 [Asset Actions] で [Create Blueprint Using This...] を選択します。
必ず、新規作成したこのブループリントの保存場所を選んで名前を付けるようにしてください。
-
この新規ブループリントのブループリント エディタ内の Components ウィンドウで Destructible コンポーネントを選択します。
-
[Details] パネルの Physics から [Simulate Physics] チェックボックスにチェックを入れます。
このブループリントでは、物理をシミュレーションします。
-
Details パネルの下方の Events で OnComponentHit Event をクリックします。
これにより新規ノードが追加され、Event Graph が開きます。
-
Other Actor ピンを 左クリック して引き出して、 Cast To FirstPersonProjectile ノードを探して追加します。
ここでは FirstPersonProjectile という別のブループリントに対して ブループリントでキャストする を行います。被破壊メッシュをヒットする場合、実際には FirstPersonProjectile ブループリントがヒットするようにします。その場合、スクリプトを追加して、このメッシュを破砕して粉々にすることができます。そうでなければ何も行いません。
-
Hit ピンを引き出して、 Break Hit Result ノードを追加します。
Break Hit Result ノードによってヒット結果とその情報に関してあらゆるタイプの情報にアクセスできます。
-
Break Hit Result から、 Hit Actor ピンを引き出して Apply Point Damage ノードを追加します。
-
Apply Point Damage ノードで、 Base Damage を 100 に設定し、 Damage Type Class を Damage Type に設定します。
Apply Point Damage ノードを使って、生じるダメージの度合いを指定するだけでなく、ダメージを受ける位置を指定することができます。
-
Apply Point Damage ノードで、以下のように残りのワイヤーを接続します。
ノードをすべて接続すると、上のようなグラフになります。
-
コンパイル し 保存 してから、ブループリントを終了します
-
コンテンツ ブラウザ からこのブループリントをレベルにドラッグします。
-
エディタで再生するには、 Play を押して、キューブで発射物を発射するには 左マウス ボタンを使用します。
エディタで再生すると、発射された発射物でキューブをヒットすると、キューブがダメージを受けて、粉々になり、ヒットされた位置に推進力を加え、その方向に飛ばします。適用される力は、 FirstPersonProjectile ブループリント内で定義されます。これは、 Event Hit ノードを使って発射物が実際に何かをヒットした場合に判断します。
-
「 Content/FirstPersonBP/Blueprints 」フォルダ内で FirstPersonProjectile ブループリントを開きます。
拡大表示するにはここをクリック
このブループリントのスクリプトは、ヒットされる物体が物理をシミュレーションするかをチェックします (ここではキューブのブループリントで true にしました)。物理をシミュレーションする場合、ヒットする位置で推進力を適用します (その量は、黄色のボックス内で定義されます。ここでは 50 に減らしました)。この値を調整して、ヒットが発生したときに適用される推進力の大きさを増減させることができます。