Unreal Engine 5.3 では、ブループリントシステムを利用して革新的な掘削デモを開発しました。このデモは、リアルタイム環境で壁に動的に穴を掘る方法を示し、ユーザーが穴のサイズをカスタマイズできるようにします。このプロセスは、UE5 公式が提供する Geometry Script プラグインのおかげで実現されました。このプラグインは、ブループリントインターフェースを通じて強力なメッシュブールアルゴリズム機能を提供します。この記事では、実行時に動的に掘削操作を行う方法について詳しく説明します。また、ブループリントインターフェースを使用して穴のサイズを調整し、ゲーム世界のインタラクティブ要素にさらなる可能性を追加する方法も示します。建築シミュレーション、地形編集、または動的メッシュ修正が必要な他のアプリケーションシーンにおいて、この記事で提供する方法は大いに役立つでしょう。
準備作業#
プラグイン Geometry Script の有効化#
UE5.0 以降のバージョン、例えば UE5.3 では、編集バーのプラグインセクションで検索バーにGeometry Scriptと入力し、チェックを入れて有効化し、UE を再起動します。
RuntimeGizmo プラグインのインポート#
これは、実行時にオブジェクトの移動、回転、スケーリングを制御できるツールです。
UE ストアから購入するか、オンラインで無料リソースを探すことができます。プラグインを解凍した後の親ディレクトリを UE プロジェクトの Content フォルダにコピーします。
掘削ブループリントクラス Actor の作成#
その前に Geometry Script プラグインが正常に有効化されていることを確認してください。コンテンツメニューで右クリックしてブループリントクラスを作成し、ポップアップウィンドウの中央の検索バーでDynamicMeshActorを検索して選択し、BP_DigHole と名付けます。
ブループリントノードの接続#
掘削関数の実装#
- 変数と関数の定義
BP_DigHole ブループリントをダブルクリックして開き、私のブループリント -- 関数バーで + ボタンをクリックして関数を追加し、GenerateHole と名付けます。変数バーに Dimension(Vector)、Size(Vector)、DynamicMesh(DynamicMesh)、DragSphere(Actor)の 4 つの変数を追加します。
- 関数の充実
以下の図に従ってブループリントノードを接続します:
Gizmo ツールの接続#
- Gizmo ブループリントにイベントディスパッチャを追加
その前に RuntimeGizmo プラグインが正常にインポートされていることを確認してください。BP_Gizmo ブループリントをダブルクリックして開き、OnGizmoChanged という名前のイベントディスパッチャを追加し、Process Interaction関数を見つけて、その実行後のロジックに以下のノードを接続します:
- コントローラーで Gizmo を有効化
シーン内でアクティブな Pawn クラス(例えば BP_CamController)のいずれかで、以下の図のようにブループリントノードを接続します:
このブループリントでは、BP_Gizmo の変数 GizmoRef を定義し、Event BeginPlay ノードを使用して BP_Gizmo のイベントディスパッチャ OnGizmoChanged をバインドし、掘削関数 GenerateHole をトリガーします。後半はマウスカーソルを Game ビューに表示するためのものです。
Left Mouse Button はマウス左ボタンのクリックイベントで、シーン内の Gizmo ウィジェットをアクティブにするために Attach Gizmo 関数をトリガーします。マウス左ボタンで Actor オブジェクトをクリックしたときに表示されます。
シーン Actor のパラメータ設定#
シーンに球体を配置し、DragSphere と名付けます。コンテンツメニューで BP_DigHole と BP_Gizmo を見つけ、それらをシーンにドラッグします。その際、BP_DigHole の変数 Dimension、Size、DragSphere に以下の値を設定します:
実行効果#
壁体のメッシュサイズを変更する必要がある場合は、Dimension 変数を変更する関数を追加できます。穴のサイズを変更するには Size 変数を変更し、穴の深さを設定するには、穴を親メッシュ体の下の Z 座標で設定します。