libro
www.tuyano.com
初心者のためのUnreal Engine ブループリント入門

物理エンジンと衝突処理 (7/7)

作成:2015-03-14 10:52
更新:2015-03-14 10:52

■タグを使って特定アクタとの衝突処理をする

では、実際に衝突のチェクをするプログラムを作ってみましょう。以下の手順にそって作業して下さい。

●床のタグ設定
まず、下準備として、床のアクタにタグを設定しておきます。何かの衝突処理をする場合、考えないといけないのが「そのアクタが置かれている地面との衝突を除外する」ということです。床の上にあるってことは、床のアクタと常に衝突(接触)している、ってことになります。他のアクタとの衝突をチェックするとき、「床との接触は除外する」ことを考えないといけません。

ここでは、タグを使ってアクタを識別します。床のアクタの詳細パネルから、「Actor」というところにある「Tags」という項目の「+」マークをクリックして下さい。これでアクタにタグが追加されます。ここでは、「floor」とタグ名を指定しておきましょう。そしてプログラム側で「衝突した相手にfloorタグが付いていないか?」をチェックするようにしておけばいいでしょう。

●アクタの用意
続いて、アクタを用意します。既に、先ほどI, J, K, Lキーで動かしたアクタはあるはずですね。それ以外に、障害物となるアクタを追加しておきましょう。新たにスタティックメッシュを作ってもいいですし、面倒なら先の球体アクタをコピー&ペーストして増やしてもいいでしょう。

●ノードの作成
「OnActorHit」ノード――先ほどキーボードで操作するように設定したSphereアクタを選択し、このアクタのOnActorHitノードを作成します。
「Actor Has Tag」ノード――アクタが指定した名前のタグを付けられているかをチェックするものです。
「GetDisplayName」ノード――アクタの名前を取り出すノードです。
「ブランチ」ノード――これは既にやりましたね。条件分岐ノードです。
「Print String」ノード――これもやりました。テキストを出力するノードです。

●ノードの接続
「OnActorHit」 → 「ブランチ」
「ブランチ」「False」 → 「Print String」
「OnActorHit」の「OtherActor」 → 「Actor Has Tag」ターゲット
「OnActorHit」の「OtherActor」 → 「Get Display Name」「Object」
「Actor Has Tag」の「Return Value」 → 「ブランチ」「Condition」
「Get Display Name」「Return Value」 → 「Print String」「In String」

●ノードの設定
「Actor Has Tag」「Tag」に「floor」と設定しておきます。

プレイして、キーボードでアクタを動かし、他のアクタに衝突させてみてください。相手のアクタ名が画面に出力されていきます。

ここでは、ヒットイベントの際に衝突した相手のアクタに「floor」タグが設定されているか調べ、「False」なら(つまり設定されていないなら)Print Stringしています。

このように、必要に応じてOther ActorのタグをActor Has Tagでチェックし、それによって処理を行う、というのは衝突処理でよく使われる手法ですので、ぜひ覚えておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。


※関連コンテンツ

「初心者のためのUnreal Engine ブループリント入門」に戻る