unity Behavior Designer使い方part10最終地点

どうもききです。

今回はunityのAIアセットBehavior Designerの使い方を解説していきたいと思います。

今回はターゲットが視界から消えた時の予測地点について解説したいと思います。

ターゲットが視界から消えた場合すぐ近くであってもターゲットの居場所がわかるのはやや不自然ではあります。

というわけでターゲットが視界から消えた場合ターゲットを最後に見た場所をターゲットに一時的に変更します。

ターゲットのポジションを取得するタスクでGetPosisionタスクというものがあります。

構造的にはこんな感じになってます。

この例だとターゲットが視界に入ったかどうかまたは銃声が聞こえた攻撃されたなどの異変が発生した場合ターゲットのポシション自体を追跡します。

視界から消えた場合など異変が突然消えた場合ポジションの取得をキャンセルし
ターゲットを最後に見た場所などを一度だけ取得しReturn FailureでRepeaterを抜けます。

RepeaterはFailureが返った場合終了するように設定することもできます。

unity Behavior Designer使い方part9逃げる

どうもききです。

今回はunityのAIアセットBehavior Designerの使い方を解説していきたいと思います。

今回はサンプルツリーを紹介しつつHPが半分以下になった場合逃げる処理について解説したいと思います。

まずはこちらの画像をご覧ください

前回同様視界にターゲットが現れたら範囲内になるまで追跡します。

射程範囲内であればターゲットを攻撃します。

そしてここからは自身のHPが半分以下になった場合について

Float Comparisonで現在のHPが50以下かどうかを比較します。

Less ThanはFloat1<Float2を表します。

EvadeタスクはMovementPackの逃げるタスク

一定時間逃げるとSuccessを返し次の枝に移行します。

HPが変化したことによって行動パターンを変える必要があります。

今回は回復薬を探し求めることにします。

Until Successで回復薬が視界に入るまで周囲を探索。

回復薬が見つかったらseekで回復薬に当たって回復し通常の行動パターンに戻します。

Repeater補足・・

RepeaterはSuccessが返ったらリセットされ再評価されます。

途中の枝でSuccessを返しリセットすればもう一度左端から順に見ていきます。

unity Behavior Designer使い方part10最終地点

unity 雨アセットRealistic Rain Stormを紹介

どうもききです。
今回はunityで雨を降らせるアセットRealistic Rain Stormを紹介したいとおもいます。

サンプル映像を見てもらえばわかりますがリアルな雨や落雷を降らせることができます。

サムプルシーンからオブジェクトを持ってくるだけであなたの作ったステージに雨を降らせることが可能です。

雨のサウンドもついてくるのでこれ一つで十分。

25$で購入できるのでかなりリーズナブルだと思います。

unity 爆発エフェクトアセット Realistic Explosions Pack

どうもききです。

今回はunityの爆発エフェクトを表現できるアセットRealistic Explosions Packを紹介したいと思います。
リアルな爆発を表現したアセットで何種類もの爆発パターンが用意されておりクオリティも高い。

ただ音声はなくエフェクトだけになります。

unityオープンワールドアセットSECTRCOMPLETE使い方2ストリーミング再生

どうもききです。
今回はunityオープンワールドアセットSECTRCOMPLETE使い方について解説したいと思います。
前回の記事はSECTRの作り方を解説しました。

今回はそれを使ったストリーミング再生について解説したいと思います。

ゲームのストリーミング再生とは自分の周りのオブジェクトだけを表示しそれ以外を非表示にすることで重さを軽減します。
本来なら全てのオブジェクト読み込んで再生することになるので大都市がステージだとかなり重くなりますね。

まずwindowメニューからSECTR→Streamを選択します。

するとこんな画面が開き作ったSECTRが全て表示されます。


次にExport All Sectorsを選択します。

するとこんな感じでSECTR内のオブジェクトは全て非表示となります。

後は自キャラとエネミーに少し処理を加えます。
文字通りステージは消えているのでこのままだと重力で落ちてしまいます。
また自キャラの周りのオブジェクトは表示しないといけません。
自キャラにはこのコンポーネントを追加します。

エネミーにはこのコンポーネントを追加します。

これで自キャラが通る道はストリーミングで再表示され通った後はまた非表示になります。
(自キャラがいるSECTRに隣接するオブジェクトが表示される。)
またエネミーは非表示状態の床の上でも重力で消される心配がなくなる。
準備が整ったので実際にプレイしてみます。

unity Behavior Designer使い方 TacticalPack

どうもききです。

今回はunityのAIアセットBehavior Designerに関する記事を書きたいと思います。

今回はBehavior Designerの拡張アセットのTacticalPackについて解説したいと思います。

Behavior Designerの拡張アセットには

MovementPack(移動)

TacticalPack(戦術)

FormationPack(フォーメーション)

と三つに分かれておりTacticalPackは攻撃系のAIを簡単に作成するためのパックになっています。

MovementPackはあらかじめ用意されたタスクを使用すれば簡単に使えましたがTacticalPackはちょっとややこしいのです。

基本的な使い方について

TacticalPackはあらゆる攻撃の処理を汎用化させるためのものだそうです。

例えば銃弾を撃って攻撃したりまたは剣で斬って攻撃したりなど攻撃の処理はゲームによって様々で攻撃やダメージの判定なども全然違ってきます。

それらをAttackタスク一つで終わらせるというのが目的になります。

MovementPackはseek(追跡)タスクとか用意された便利タスクを追加するだけで簡単に使えますがTacticalPackの場合はそうもいきません。

Attack(攻撃)タスクを追加しただけで勝手に攻撃アニメーションや銃弾を撃ってくれるはずがないので攻撃方法を指定する必要がありますね。

クラスの継承する

TacticalPackのAttackタスクでキャラクターに攻撃させるためにはまず別で攻撃に関するスクリプトを用意してIAttackAgentを継承する必要があります。

そこから継承されたいくつかのメソッドを使用します。

public float AttackDistance()
攻撃範囲を指定

public bool CanAttack()
攻撃可能かどうか

public float AttackAngle()
攻撃可能な角度を指定

public void Attack(Vector3 targetPosition)
指定したターゲットに攻撃する(中にアニメーションとか実際の攻撃方法を書いておく)

これらを用意した後で攻撃タスクを実行します。

Behavior Designerで攻撃だけのツリーを構成しようと思ったら結構ややこしいです。

TacticalPackはこれ一発で済むのでこれはこれで便利なのかもしれません。

ダメージ処理に関する記事はまた次回書こうかと思います。

 

unity Behavior Designer使い方スクリプト編

どうもききです。

今回はunity Behavior Designer使い方について解説したいと思います。

今回はタスクの中身のスクリプトについて解説していきたいと思います。

タスク用のスクリプトの書き方ですがまず最初に名前空間にこの3つを宣言します。

using UnityEngine;
using BehaviorDesigner.Runtime;
using BehaviorDesigner.Runtime.Tasks;

次にクラスを宣言しクラス名の後に:Conditional、Actionなど条件タスクなのか行動タスクなのか宣言します。

public class currenthpGet : Conditional

次に変数を宣言します。

public SharedGameObject target;

public SharedFloat moveDistance = 2;

Behavior DesignerにはShared型の変数がありますがSharedは共有変数でありpublicは外部のGameObjectと関連付けます。

外部のGameObjectの値が変われば自動的にtargetの値も変わります。

次に

public override void OnStart()
public override TaskStatus OnUpdate()

を継承します。

OnStart()は最初に実行されそれ以降はOnUpdate()の中身が実行されます。

通常のUpdate()メソッドは永続実行ですがBehavior DesignerのOnUpdate()は再評価時に再び実行されるので基本的に一回だけ中身が実行されて止まります。

次に値の代入などについて

Shared変数の中身を取得したい場合は.valueを宣言する必要があります。

var targetPosition = target.Value.transform.position;

Float value = moveDistance.Value + 1など

OnUpdate()の中身を永続的に繰り返したい場合
return TaskStatus.Runningを記述します。

最後にタスクスクリプトにはかならず

return TaskStatus.Failureとreturn TaskStatus.Successを記述しないといけませんFailure(失敗)もしくはSuccess(成功)を返すと終了します。

 

 

 

 

 

 

 

unity Third Person Controller使い方AIを作る

どうもききです。

今回はtpsアセットThird Person Controller使い方を解説したいと思います。

今回は敵AIを作りたいと思います。

まず前回自キャラを作るときにやったように敵キャラを作ります。

次にNavMashAgentとNavMashAgentBridge二つのコンポーネントを追加します。

NavMashAgentはAIのスクリプトで移動させるのに必要なものです。

NavMashAgentBridgeはキャラクターが移動する際に歩くアニメーションが自動で作動してくれるものです。アニメーションタスクを追加しなくてもキャラクターが移動するだけで勝手に歩いてくれるようになります。

 

 

unityおすすめアセット紹介 パーティクル系

どうもききです。

今回はunityのアセットストアで実際に購入したパーティクル系のアセットをいくつか紹介したいと思います。

爆発パーティクルRealistic Explosions Pack

爆発系のパーティクルアセット。
何種類もの爆発パターンが用意されておりクオリティも高い

武器エンチャントMeshEffect

武器に属性を纏わせるパーティクル。
炎や闇などあらゆる属性が用意されている。
纏わせた武器をエンチャントスクリプトにドラッグアンドドロップするだけで適用できます。

魔法スペルWhite Magic Effect

魔方陣がメインのパーティクルアセット。

雨Realistic Rain Storm

リアルな雷雨を表現できるアセット。
リアルな雨音もついてくるのでステージに雨を降らせたい場合人におすすめ

unity PCスペックについて

どうもききです。

今回はunityでゲーム開発をするのに必要なpcスペックについてお話ししたいと思います。

自分はcorei5でグラボはGTX970を積んでます。

2dゲームを開発する場合はノートpcでもなんでもいいんですが

3dゲームの場合そこそこ高スペックなpcが必要になります。

まあゲーム開発するのにグラフィックボードが必要なのかどうかはなんともいえませんが

ノートpcでは苦しいでしょう。

実際テストプレイするだけでも再生にかなりの時間がかかりますし

読み込みだけで作業が進みません。

実際にグラフィックボード積むか積まないかだけでもかなり変わってきます。

高グラフィックのオブジェクトだとテクスチャが表示されなかったりします。

アセットを読み込むにもなんやかんや時間がかかるので

快適にゲーム開発を進めたい場合高スペックpcが必要です。

ゲーム開発用pcとゲーミングpcどちらがいいか悩む人もいますが

普通にゲーミングpcでいいです。