CharacterControllerを使用したキャラクター操作の作成【UnityでTPS作成】#1

1. プレイヤーキャラクターの準備 プレイヤーキャラクターと銃をSceneに配置し、銃をキャラクターの右手の子にする。 そして銃の位置を調整する。[Player]に[CharacterController]と[CapsuleCollider]を付与し、Center, Radius, Heightをいい感じに調整する…

StandardAssetsをimportした時のエラー解決

Atandard Assets/Utility/SimpleActivatorMenu.csを以下のように修正する。3行目に以下を追記。 using UnityEngine.UI; 12行目を以下の様に修正。 public Text camSwitchButton;

アクタをクリックしてハイライトする

ゲーム中にクリックしたアクタをハイライトできるようにする。 1. マウスカーソルを表示させる プレイヤーコントローラーを開く。 マウス有効ボタンをクリックするとマウスカーソルが表示され、もう一度クリックするとマウスカーソルが非表示されるようにブ…

1対1戦闘AIを作る

1. 準備 1-2. データを準備 Enumerationの「E_BushiState」を作成。Structureの「S_AIBushiData」を作成。Data Tableの「DT_AIBushiData」を作成。 2.ステートを定義 ステートを定義する。 3. AIコントローラに敵リストを更新する機能を作る AIコントローラ…

敵をロックオンする

敵をロックオンする機能を実装する。 ロックオンすると、左右の移動が敵を中心に円を描くような移動になる。 1. ロックオンする敵を決める 1-1. ロックオン可能領域を定義する プレイヤーのキャラクターBPを開く。 [Components]パネルで[Mesh]の子階層に[Sph…

槍で敵を攻撃する

槍で敵を攻撃し、敵がダメージのアニメーションを再生するようにする。 0. 敵キャラクターを用意する 敵のキャラクターBPを作成しておく。 1. プレイヤーのキャラクターBPを編集 1-1. 槍にコリジョンを設定する [Components]パネルから[Yari]の子階層にボッ…

AnimationMontageでコンボ攻撃を実装する

「逆袈裟斬り、袈裟斬り、突き」の三段コンボを作成する。 1. アニメーションモンタージュを作成 1-1. アニメーションモンタージュを作成 [Content]を左クリックで[Animation]>[Animation Montage]を作成する。 1-2. セクションを設定 [Asset Browser]パネ…

戦闘AIの作り方【Dynamic Combat Systemをリバースエンジニアリング】

1対1の戦闘システム作成の参考にするため、UE4マーケットプレイスで販売している「Dynamic Combat System」をリバースエンジニアリングする。 ブラックボード ブラックボードには以下のキーを定義。 [behavior]キーには[E_AIBehavior]というEnumerationが割…

AIチュートリアル④ 〜プレイヤーを攻撃する〜

AIがプレイヤーを攻撃するようにする。 1. サービスの作成 ブラックボード[BB_SamuraiTaisho]にBool型のキー[PlayerIsMeleeRange]を追加する。そして、ビヘイビアツリー[BT_SamuraiTaisho]の[ツールバー]>[New Service]から新しいサービスを追加し、[IsPlay…

AIチュートリアル③ 〜プレイヤーを追跡する〜

プレイヤーを見つけて追跡するAIを実装する。 1. タスクを作成する ビヘイビアツリー[BT_SamuraiTaisho]を開き、[New Task]の[BTTask_BlueprintBase]を選択して新しいタスクを作成し、[FindPlayerLocation]と名前を変更する。Blackboard Key型の変数を[Vecto…

AIチュートリアル② 〜ランダムな場所に移動する〜

ランダムに場所を決めてそこに移動する、というAIを作成する。 1. ブラックボードでキーの定義 ブラックボード[BB_SamuraiTaisho]を開く。 [Blackboard]パネルの[New Key]から[Vector]を選択し、[TargetLocation]と名付ける。 2. タスクの作成 ランダムな場…

AIチュートリアル① 〜準備〜

AIキャラクターを作成していくに当たって、必要となるファイル等を作成していく。 1. AIに必要なファイルを作成する まずはContent直下に「AI」フォルダを作り、その下に「SamuraiTaisho」フォルダを作る。そして「SamuraiTaisho」の下にキャラクタークラス…

刀で敵を攻撃できるようにする(トレースを使用する方法)

1. 刀のソケットを作成する プレイヤーキャラクターのスケルトンエディタを開き、刀の始点と終点のソケットを加える。 [hand_r]の子に[Katana_TopSocket]と[Katana_BottomSocket]を作成する。 2. Anime Notify Stateクラスのブループリント を作成する Anime…

刀で敵を攻撃できるようにする(コリジョンを使用する方法)

1. 刀にコリジョン を付ける [Components]パネルで、[Katana]の子に[Sphere Collison]を作成し、[KatanaCollision]と命名。位置を調整する。 ([Katana]はキャラクターの右手に設置したソケットを Parent Socket に設定している。)そして、[KatanaCollision…

アニメーションのリターゲット

アニメーションのリターゲットには「同じスケルトンを使用したリターゲット」と「異なるスケルトンを使用したリターゲット」の2種類ある。 同じスケルトンを使用したリターゲット 異なるスケルトンを使用したリターゲット 1. アニメーションアセットのスケル…

ウォーゲームを作る② ヘックスセルの種類を配列で指定して自動で敷き詰める

ウォーゲームを作る①ではヘックスセルを自動で敷き詰めたが、今回は配列で様々なタイプ(色)のヘックスセルを指定して、それを自動で敷き詰めたい。まず、色々な種類のヘックスセルを作成する。 ブループリント [HexMap]にヘックスセルのタイプを指定するinte…

ウォーゲームを作る① ConstructionScript を使ってヘックスセルを敷き詰める

ヘックスマップのウォーゲームを作成する。 その最初の一歩として、ヘックスセルを敷き詰めてヘックスマップを作成する。 ヘックスセルを自動で敷き詰めるにはConstructionScriptを使う方法とEventBeginPlayを使う方法が考えられるが、両者には以下の違いが…

AIの作り方① セッティング編

AIをプログラミングするに当たり、必要なファイルや最初のセッティングを解説する。 AIのBaseClass的な感じで作ってもいいのかも知れない。 1. ナビメッシュを敷く [モード]パネルから[ナビメッシュ バウンズ ボリューム]をビューポートにドラッグ&ドロップ…

アニメーションをつける

UE4のマーケットプレイスでアニメーションを購入して利用するまでの流れを解説する。 異なるスケルトン間でアニメーションをリターゲットするということを行う。 アニメーションリターゲティング この刀のアニメーションを購入したので、これを例に進めてい…

プレイヤーキャラクターの作成

ハードウェアからの入力を取ってキャラクターを動かせるようにしたい。 1. 入力マッピングを設定する ツールバーの[セッティング]>[プロジェクト設定]>[インプット]を選択 アクションマッピング アクションマッピングを設定する。アクションマッピングは離…

キャラクターを動かす

UE4

キャラクターのアセットをインポートして、動かすまでの流れをメモ。 1. キャラクターをインポート [コンテンツ]の下に[Characters]フォルダを作成する。 2. ブループリントを作成 ブループリントを作成 [コンテンツ]の下に[Blueprints]フォルダを作成する。…

ビヘイビアベースAIを作る

今回は1対1の刀での戦闘を行うAIを、ビヘイビアツリーで作ってみたいと思います。 ノードのベースクラス まずはビヘイビアツリーのベースクラスを[NodeBase.cs]に作ります。 後々これを継承してビヘイビアツリーを作っていく様にします。[NodeBase.cs] using…

剣で戦闘を行う(練習)

合戦における部隊運用を作っていく前に、一対一での戦闘できるようにします。 今回は刀vs刀を作ることにします。 プレイヤー 今回もユニティちゃんを使います。 [Transform]以外のコンポーネントを外し、[CharacterController]をつけます。 基本操作 そして…

DUALSHOCK4を使う

ここから、足軽大将の操作をDUALSHOCK4で行うようにします。 DUALSHOCK4の接続 まず、DUALSHOCK4とPCをBluetoothで接続します。 DUALSHOCK4の[PSボタン]と[SHAREボタン]を同時に長押しします。 インプットマネージャーの設定 今回は、以下の表の様にボタンに…

HexMap 2

今回は、ヘックスセルの境界を作り込んでいきます。ヘックスセルの境界は、隣接する互いのセルの色をブレンドした色を表示するようにしてみましょう。 隣接セルの定義 まずは、隣接するセルの6つの方向を定義した列挙隊を作成します。列挙型は順序付きの名前…

槍で攻撃できるようにする

足軽大将の命令で槍隊が突撃するようになったので、今度は槍の攻撃が当たるようにしていきましょう。 まず、槍にコライダーを追加して「is Trigger」にチェックを入れておきます。だいたい槍の上部をカバーするようにしました。 そして[spear]に[AttackSpear…

槍足軽をステートマシンにする

指揮官の命令で槍足軽達を一斉に制御できるように、槍足軽をステートマシンにします。まず、槍足軽のステートを列挙型で定義します。とりあえず今は待機状態と前進状態のみにします。[speaman.cs] public enum YariState { IDLE, WALK } private YariState y…

Hex Map 1

ヘックスマップのWarGameを作っていきます。 六角形の定義 はじめに、六角形の大きさを決めます。六角形にはその外側と内側に円が描くことができ、外側の円の半径を0.866025404倍が内側の円の半径になります。つまり、外側の円の半径で六角形の大きさを定義…

鉄砲足軽を作る

合戦のあり方を変えた火縄銃。 今回は、そんな火縄銃を操る鉄砲足軽を作ります。 合戦において、彼らはどのように戦ったのでしょうか。鉄砲が合戦に導入された初期段階では鉄砲による死傷者は記録されておらず、威嚇程度の効果しかなかったようです。 しかし…

槍足軽を作る

今回は槍足軽を創ります。 槍は戦国時代の主力兵器で、主に「持槍」と「長柄」の2種類がありました。 持槍は武士が用いた槍で、長さは約4mのものが主流だったようです。 一方長柄は足軽が用いた槍で、5〜6mもありました。足軽はこの長い槍を使って集団戦を…