週刊SleepNel新聞

SleepNel所属のぽうひろが日々の個人開発で気になったことを綴ります。

RAIN(AI)でWayPointパトロールAIを実装してみた

みなさん、こんにちは。ぽうひろです。

突然ですが、ゲームを作成するとき、敵の動きをプログラムするのめんどくさいですよね。

あ、そうでもないですかねw

僕はめんどくさいので、アセットの力を借りたいと思います。

RAIN AI for Unity
https://www.assetstore.unity3d.com/jp/#!/content/23569
f:id:pouhiroshi:20170405192716p:plain

こちらのアセットを使えば、(あまり)プログラミングしないでAIによるキャラクターの動作を制御することができます!!

今日は、決めたポイント(Waypoint Route)をうろうろパトロールする処理をやってみましょう。
まずはじめに、大事な設定を行います。
RAIN->Help->SettingsからShow Advancedをチェックしておきます。
これを行うとRAINの細かい設定ができるようになるのですが、この中に、視界センサが壁を突き抜けないようにする設定が混ざっており、デフォルトがOFFなんですよね。。。。
なんでONにしとかないの!悪意を感じます・・・

では、はじめにAIを作成します。
f:id:pouhiroshi:20170405193711p:plain
AIをつけたいキャラクタを選んで、メニューバーにあるRAIN->CreateNew->AIを選びます。
するとAIコンポーネントが作成され、Inspector上でいろいろ設定を行うことができます。

まずは視覚センサーをつけましょう。
f:id:pouhiroshi:20170405194431p:plain
作成されたAIオブジェクトを選ぶと、Inspector上にRAIN Rig ScriptがGUIで表示されます。
この中の「目」のアイコンを選ぶとセンサーの設定ができます。
Add Sensorセレクトボックスから「Visual Sensor」を選びます。すると、
視界の範囲が作成されます。紫色の帯の範囲です。
f:id:pouhiroshi:20170405194708p:plain
視界は360度にしていますが、Horizon Angleで90度とかに狭められるので、狭めてみましょう。
f:id:pouhiroshi:20170405194820p:plain

次にパトロールするポイント(WayPoint)を作成します。
ここではプログラムから4地点作ってみます。
WaypointRigというコンポーネントにWayPointをAddしていくイメージです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using RAIN.Navigation.Waypoints;

public class EnemySample : MonoBehaviour {

	// Use this for initialization
	void Start () {
		CreateWaypointNetwork();
	}
	
	// Update is called once per frame
	void Update () {
		
	}

	void CreateWaypointNetwork()
	{
		GameObject tObject = new GameObject("WPN");
		tObject.transform.position = Vector3.zero;
		WaypointRig tWaypointRig = tObject.AddComponent<WaypointRig>();
		//Choose either Network or Route for the type
		tWaypointRig.WaypointSet.SetType = WaypointSet.WaypointSetType.Network;
		tWaypointRig.Serialize();

		Waypoint point1 = new Waypoint();
		point1.Position = transform.position + new Vector3(5f,0.2f,0f);
		Waypoint point2 = new Waypoint();
		point2.Position = transform.position + new Vector3(10f,0.2f,0f);
		Waypoint point3 = new Waypoint();
		point3.Position = transform.position + new Vector3(10f,0.2f,5f);
		Waypoint point4 = new Waypoint();
		point4.Position = transform.position + new Vector3(5f,0.2f,5f);
		
		tWaypointRig.WaypointSet.AddWaypoint(point1);
		tWaypointRig.WaypointSet.AddWaypoint(point2);
		tWaypointRig.WaypointSet.AddWaypoint(point3);
		tWaypointRig.WaypointSet.AddWaypoint(point4);
	}
}

とりあえずこれで実行してみましょう。
f:id:pouhiroshi:20170406095722p:plain
はい、緑色の丸みたいなポイントがWayPointです。

f:id:pouhiroshi:20170406095708p:plain
WPNというオブジェクトをInspectorでみると、Waypoint NETWORKにちゃんと4つWaypointが設定されてますね。

これだけではパトロールしませんので、最後にAIを作成します。
ツリーエディタがあるので、これで部品を組み合わせて作ります。
キャラクターに作ったAIの頭のアイコンタブを開くと下の方にOpen Behavior Editorというボタンがあるのでクリックします。
f:id:pouhiroshi:20170406100042p:plain

すると、Behavior Editorというウインドウが開きますので、右のBehavior Treeの中から、Create New Behavior Treeを選びます。
f:id:pouhiroshi:20170406100207p:plain
すると名前を聞かれますので、なんでもいいのですがPatrolAIとでもしておきましょうか。
f:id:pouhiroshi:20170406100331p:plain
すると選べるようになりますので、選ぶと編集ができるようになります。
f:id:pouhiroshi:20170406100430p:plain
右クリックで追加部品を選べます。Create->Dicisions->Waypoint Patrolを選びましょう
f:id:pouhiroshi:20170406100727p:plain
WAYというのが追加されましたね。必要な項目を記述します。
Waypoint Route の所に作成したWaypointRigの名前を文字列で入力します。
GameObject tObject = new GameObject("WPN"); としたので、"WPN" と書きます。eと書いてある部分はプログラム記法で書いてねという意味らしいので、ここでは文字列なのでダブルクォーテーションで囲まないとエラーになります。
あと、Move Target Variableに 移動対象変数名を宣言します。ここにはeと書いてないので、ダブルクォーテーションで囲まなくて良いです。
好きにつけて良いのでwpとしておきます。

さて、ここからwaypointpatrol部品上で右クリックして、子ノードを追加します。
Create->Actions->Moveを選びます。
f:id:pouhiroshi:20170406101144p:plain

moveが追加されたら、必要な項目を設定します。
Move TargetにWaypoint Patrolで設定したMove Target Variableの変数名 wpを入れます。eと書いてあるのでダブルクォーテーションで囲むと思いきや、プログラム記述になるのでwpのままでOKです。
Move Speedも設定します。ここは数値なのでダブルクォーテーションで囲まなくて良いです。1としておきましょう。
f:id:pouhiroshi:20170406101735p:plain

はい、これで必要な設定は終わりました。AIの保存は自動でやってくれるようです。
最後にAIのBehavior Treeで今作成したAIを選びます。
PatrolAIでしたね。
f:id:pouhiroshi:20170406101538p:plain

はい、これでひとまず完了です! 実行してみましょう!

警官がWaypointをパトロールしていますね!

Behavior Treeで、mecanimでアニメーション制御とかもできるので、歩かせたりとかもできます。

あまりSampleがなく、最初はかなりとっつきにくいですが、慣れたらサクッと敵AIを作れるようになるのではないでしょうか!!(勉強中)

次回は、パトロール中にプレイヤーを発見したら、追っかけてくるようなAIを発展させて作ってみようと思います。

それではまた!

激動の近況報告

みなさん、お久しぶりです。ぽうひろです。

しばらく記事を更新していなくてすみません。

Twitterで絡んでいる方はご存知だとは思いますが、いろいろ忙しく動いておりまして、やっと落ち着いたのでご報告いたします。

常駐仕事をやめ、リモート(持戻り)仕事をやります(4月から)

常駐案件は報酬もよく魅力的ではある一方、通勤時間がかかる(自分の場合は往復3時間)、自分の開発ができない、などといったデメリットがありました。
最新技術のキャッチアップもその現場は早く、勉強になっていたので苦渋の選択でしたが、思い切ってやめることにしました。
4月からの仕事は得意なJavaではなくPHPですが、何とか頑張っていこうと思います。
皆様からのお仕事も引き続きお待ちしています!

仕事場所として横浜のコワーキングスペース タネマキ に月額会員で入ります

tane-maki.net
以前、ドロップインで入ったことはあったのですが、オーナーの上津原(うえつはら)さんがとても親切な方で、すごく居心地が良い作業場所です(*´ω`*)


ディスプレイも借りれます。(月額会員は無料)素晴らしい。
お茶やコーヒー、お水も無料のものがあります。これは集中できますね!!
Unityもくもく会や電子工作部など、楽しいコミュニティも定期的に開催されてるようなので、楽しく暮らせそうです(*´∀`)
将来はコワーキングスペースの運営もやってみたいので、いろいろ勉強させていただきます!

人間ドックの結果

健康でなくては、いきなり常駐案件をやめるのは不安があったので、人間ドックを受けてまいりました。
結果は、高血圧・カリウム不足 と言う所見がつきました(;´Д`)
仕事を変えるのでどうしても不安からストレスを受けていて、脈拍がおかしいなーと思ってたので案の定でした・・・
また運動不足もありますね。これも解決せねばなりません。
今は精神状態も落ち着いてきており、さぁやるぞと言う感じなのでストレスはなくなってきています。
あとは運動不足ですね。これには秘策があります・・・・それは・・・・
f:id:pouhiroshi:20170331133512p:plain:w400

自転車通勤!!

家からタネマキまでは自転車で30分ほどの距離にあります。行き帰り自転車で通えば、運動にもなるし、電車賃も浮くし、ジム代も要りません!一石三鳥! ということで、ジャイアントESCAPE Airという軽量がウリのクロスバイクを中古で購入しました。
雨の時はさすがに電車にしようと思いますが、頑張ってこれで通勤します!!

TokyoIndieFes2017に当選しました!

www.tokyosandbox.com
申し込んだら当たっちゃいましたw
展示できるものがアーバンナックル(Urban Knuckle Official Site on Strikingly)くらいしか今はないのですが、
アーバンスパイを完成とまでは言わず、遊べるくらいまでにして持っていけたらなと思います。(*´∀`)
あと1ヶ月半・・・・・いけるかなぁ?w
進捗↓
sleepnel.hatenablog.com



激動の近況報告は以上です!

不安あり期待ありのフリーランス第2章! 頑張って生き抜きたいと思いますので、皆さん今後ともよろしくお願いいたします!

お仕事、お待ちしています!!(念押し

それではまた!

アーバンスパイにFPSを導入してみたら30分でできた

こんにちは。ぽうひろです。

みなさん、ご存知の通り今ロングダークにハマっている真っ最中なのですが
sleepnel.hatenablog.com

途中まで作っているアーバンスパイ(仮)にロングダークのようなFPS(一人称視点ゲーム)を取り入れたら面白いのでは?と思い立ち、やって見みました。
f:id:pouhiroshi:20170303184015p:plain:w500

UnityのStandardAssetsの中に、FirstPersonControllerと言うものがあり、これを使うと簡単にFPSが実現できるそうです。ほんまかいな。
やってみましょう。

ナックルさんのオブジェクトにFirstPersonControllerコンポーネントを追加します。
f:id:pouhiroshi:20170303183159p:plain:w300

あと、CharacterControllerと連携して動かすみたいなので、それも追加します。
f:id:pouhiroshi:20170303183307p:plain:w300

基本的にはこれだけです!あとはMainCameraがシーン上にあればそれが視点になりますので、
位置を顔の位置に置いておくと良いです。

キャラクターの子オブジェクトとしてカメラを追加して、顔の辺りに置いてあります。
f:id:pouhiroshi:20170303184015p:plain:w500

FirstPersonControllerのパラメータで歩くスビードや顔を向けるスピードなどを設定できます。
シンプルでいいですね。

FirstPersonControllerによる操作はキーボードのWASDで移動です。W(前進)、A(左移動)、S(後退)、D(右移動)
マウスで顔の向きを変えられます。
この辺の操作はロングダークと同じです。っていうかロングダークもこれ使ってるんじゃないでしょうか・・・w

それでは、実行してみた結果はこちらです!


これは想像以上にロングダーク感です・・・!!
やっぱり一人称視点は没頭感が出ますね!

これで脱出ゲームを作るのも楽しいかもしれません。

皆様も簡単にできますので、ぜひトライしてみてください!

ではでは!

TheLongDark プレイ動画 3日目その2配信しました!

みなさん、こんにちは。ぽうひろです。

f:id:pouhiroshi:20170203102027p:plain

TheLongDark プレイ動画 3日目その2配信しました!

前回までのあらすじ
sleepnel.hatenablog.com
漁師小屋に銃を求めて向かったぽうひろだったが、そこには銃はなかった。。。。悲しみにくれるも、鹿の肉と皮を剥ぎ取りに小屋へ向かう・・・するとそこに重くるしい足音が忍び寄る・・・!!

ということで、プレイ動画をお楽しみください!(∩´∀`)∩

TheLongDark プレイ動画 3日目その2

プリンキピア〜master of science〜 プレイ動画#1 公開しました!

みなさん、こんにちは。ぽうひろです。

今日のプレイ動画は tomeapp(@shinhirota)さんのプリンキピア(PRINCIPIA)です。
f:id:pouhiroshi:20170213131145p:plain:w500

steamのページはこちら
store.steampowered.com


このゲームは17世紀ヨーロッパ科学史に登場した科学者になりきって、研究を重ね、論文を提出し、名声を高めていくサイエンスシュミレーションゲームです。
17世紀はどうやら科学革命というものがあり、アイザック・ニュートンガリレオ・ガリレイなどが登場しますね。

17世紀 - Wikipedia

17世紀の科学革命
微分積分学と光学、万有引力などの諸法則・定理を発見したアイザック・ニュートン、望遠鏡を使用して月の表面に凸凹があることや木星に衛星があること、天の川が無数の星の集合であることなど天体に関する様々な発見により天文学に大きく貢献したガリレオ・ガリレイ、惑星の軌道が楕円であることなど天体の運行法則に関するケプラーの法則の提唱やルドルフ表を作り地動説のほうが精密に惑星の運行を計算できることを明示したヨハネス・ケプラーなど科学的な発見が相次ぎ、科学哲学上にも大きな影響を与えたことから科学革命と呼ばれている。 誰にでも検証可能な方法によって自説の正しさを証明するという、科学的方法が用いられるようになったのもこの時期からである。

オープニングから、ヨーロッパの雰囲気漂う心地いいストリングスのBGMがはじまります(*´∀`)

それではどうぞご覧ください!!


プリンキピア #1

シルバー事件HD プレイ動画#1 公開しました!

みなさん、こんにちは。ぽうひろです。

今日は、シルバー事件というゲームのプレイ動画を公開しました!

f:id:pouhiroshi:20170210113121j:plain

シルバー事件は、1999年にPlayStation1でリリースされたアドベンチャーゲームです。
それが最近、HDリマスター版としてSteamで発売されました。
store.steampowered.com


シルバー事件は、クライムサスペンスADV(犯罪アドベンチャー)ゲームです。
随所に映画を意識したかっこいい演出がちりばめられています。

興味を持たれた方は、ぜひプレイしてみると良いと思います!

それではプレイ動画をどうぞ!!チャンネル登録もお待ちしています!!

[注意ネタバレあり] シルバー事件HD プレイ動画#1

TheLongDarkプレイ実況 3日目その1 配信しました!

みなさん、こんにちは。ぽうひろです。

TheLongDarkプレイ実況 3日目 をYouTubeにて配信しました!
f:id:pouhiroshi:20170203102027p:plain

前回はこちら
sleepnel.hatenablog.com


ぜひ、おヒマな時にでもご覧下さい(*´∀`)


あらすじ:
ロングダーク3日目。湖からの探索の帰路、オオカミ三匹の群れを発見するも、なんとかかわし拠点へ戻った。ぽうひろ。ライフルを求めて、漁師小屋への旅に出る・・・!!


TheLongDark3日目 その1