BLOGブログ

2017.09.08UE4UE/ Blueprint

[UE4] ランダムに移動するキャラクターを簡単に実装する方法

ゲーム制作には乱数が必要不可欠です。そしてUE4でも、様々な乱数を簡単に取得する方法があります。

今回はそのたくさんある方法のうち、ボックス内の座標をランダムに取得する機能を使って、簡単にエリア内をランダムに移動するキャラクターを実装する方法をご紹介します。

作成手順

1.移動範囲用のアクター配置

まず最初に、トリガーボックスをレベルに配置します。このトリガーボックスの中をキャラクターが動き回る事になります。

2.キャラクターの用意

次に動き回るキャラクターを用意します。とりあえず今回はキャラクタークラスを基底にした「BP_Character」を作成します。

このクラスは、ゲームによってNPCであったり敵キャラであったり、ランダムな動きをさせたいアクターになります。

3.移動処理の実装

次に移動処理を実装します。本来であればCotrollerなどを経由するのが望ましいかと思いますが、今回はとりあえずキャラクタークラスに直接移動処理を書くことにします。

まず、キャラクターの移動範囲であるトリガーボックスを参照できるようにします。

次にそのエリア内に対してランダムな座標を取得できる関数を作成します。

この時に使用するのが「Random Point in Bounding Box」です。これは指定したOriginを中心座標に、Box Extentの範囲内にあるランダムな座標を取得する関数です。

つまりこの引数にトリガーボックスのボックス部分の値を代入すれば、エリア内に存在するランダムな座標を取得できるようになる、という算段です。

あとはこの関数を利用して初期座標や目的地の座標を設定してあげればよいわけです。

まずは初期座標の設定からです。

今回はZ軸に関しては元のアクターの座標をそのまま使うようにしましたが、ここは接地処理などを使った方がよいでしょう。

次に移動処理です。

初期座標と同じようにランダムな座標を取得し、それを「Move To Location」の「GoalLocation」に指定してあげれば、キャラクターはその位置に移動するというわけです。

あとはレベルに配置したトリガーボックスを好きなサイズに広げてキャラクターに紐付け、最後は忘れずにナビメッシュを配置すれば完成です。

ね、簡単でしょ?

最後に

さて、このように乱数を所得する関数はブループリントでもいくつもサポートされていますが、今回使ったボックス以外にも、指定した円錐内からランダムな単位ベクトルを取得する「Random Unit Vector in Cone」など様々なものがあります。

これらをうまく活用して、簡単にゲームを作っていきましょう。