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 座標で設定します。