2/9そろそろモンスターの動きをしっかりと作っていきます。移動タイプをステータスに持たせそれを見て処理を変更するといった感じになります。ゴブリンはゼルダの伝説神々のトライフォースに出てくる見張り兵(襲ってこないタイプ)を元に動きを組んでみます。意外と規則性のある動きだったことに気付きました。ゼルダ神トラの見張り兵(襲ってこない)のルーチンを見てみる神々のトライフォースをやったことがある前提で書きます。襲ってこない兵士のほうのルーチンは以下になります。一定歩数(秒数?)で止まる以下右右左左を繰り返す顔だけ右を向く(1回目)向いた方向に方向転換し、直進(1回目)顔だけ右を向く(2回目)向いた方向に方向転換し、直進(2回目)顔だけ左を向く(1回目)向いた方向に方向転換し、直進(1回目)顔だけ左を向く(2回目)向いた方向に方向転換し、直進(2回目)ループ最初に戻るといった感じです。小さいころは見つけたらすぐ切りかかってたので、モンスターのルーチンなんてまったく意識してないので以外なことに気付きました。この襲ってこない兵士、一応リンクを視界にとらえたら徘徊モードよりほんの少しだけスピードアップして突進してきます。シンプルなルーチンながらもちゃんと見張りしてますね。それでも追尾してくる兵士とは違ってやる気が感じられません。アルバイト兵でしょうか(笑)リンクを発見して突進してくるときは方向転換するときよりも長く直進してくるような動きでした。このルーチンを一旦トレースして全く同じだと芸がないので方向転換はランダムにしてみましょう。直進する動きを作るまずはシンプルなところからゴブリンを進行方向に直進する動きを作ります。そのためには方向のステータスが必要になりますね。必要な要素は向いている方向と方向に進むための移動処理ですね。方向はState_EnemyManagerで「_direction」として定義しプロパティで「Direction」でgetできるようにしています。protectedで宣言しているのでsetは基本的にこのクラスの親子だけ操作可能なので必要ありません。それでは乱数で方向を強制的に変えるメソッドを作りましょう。向いてる方向の左右のどちらかを向くように2択になっています。}下0上1左2右3なので2未満であれば上下と判定できます。それ以外は左右と判定できるので結構シンプルにかけますね。上下向いてるときは左右のどちらか。左右向いてるときは上下のどちらかに方向を強制変更するメソッドです。これで進行方向に対して横に向けるようにできました。進行方向に直進する関数あとは向いている方向に対して直進するだけです。今までは最短追尾移動を使っていましたが、方向を見て加算する情報を変更するようにしてみましょう。Move_Enemyクラスの移動関数を変更します。}まず毎フレーム加速度をXYともに0に初期化しておきます。その後現状の向きを取得してどの方向に加速度を入れるかを判断します。上下左右どこかに加速している状態だったら状態を歩き状態に変更します。現在の加速度をもとにモンスターを移動させるといった感じですね。その後はぶつかっているかを確認し、ぶつかっていたら先ほど作った向き変更関数を呼び出します。止まっている状態に変更し、当たった判定も解除しておきましょう。これで基本的なルーチンは出来上がりです。一度実行してみましょう。壁沿いに行くと方向を変えた瞬間まだ壁に当たっているのか連続で方向転換をしてしまいます。衝突判定を調べる場所が悪いのかもしれません。判定位置を変えてみましょう。other)を使ったところ、良い感じに動いてくれたのですが今度は狭い通路に行くと詰まってしまうことが確認しました。難しいですね......Game側のウィンドウではなくてScene側のウィンドウとぶつかりログをみていると角っこで2連続壁にぶつかるとStayの状態になってしまうようでEnter側が発動しなくなっています。EnterじゃなくてStayに戻すべきですね。何かをする」はコルーチンを使うといい感じですね。コードを加えてみましょう。}先ほどの衝突時の処理を関数化しておいてコルーチン側で3秒後に呼び出します。_hitColでStopCoroutineを呼び出しているのは壁にぶつかったとき強制的にコルーチンを止めて方向転換させたいからです。ぶつからないときは3秒後に方向転換するって感じですね。エリアに入ったときモンスターが動き出すのでその時に1回だけStartCoroutineを呼び出します。}これでいい感じに動いてくれるのですが......エリア外に出てしまっていますね......エリア移動用の判定しかないためスルーできてしまいます。モンスターだけ壁と認定する透明オブジェクトを置いておくのがよさそうですね。プレイヤーは素通りできるものが望ましいです。基本的にエリアとエリアの間は扉があるので、扉を開けたらオブジェクトを動かさずに透明にしてプレイヤーだけ通れるようにしたほうがよさそうです。今回はこれぐらいにしておきましょう。次回はモンスターが外に出ないように判定の修正を行います。1/14なおキーヌ某なんでも屋企業のシステム管理者を務めつつリーマンからの解放を目指して奮闘中。FE&BE開発・Webデザイン・DTPデザイン・SEO・Webライティング等一人である程度のクオリティで大体のことが出来るなんでもエンジニア。小学校の夢でもあったゲームクリエイターを目指して2019年から少しずつ積み上げています。ゲーム作りの参考書TOP。