はじめに
めのねです。
前回のはじプロ記事ではスポイトノードンとマーカー表示ノードンを使ってBGMを切り替える方法をご紹介しました。
今回は「UFOがプレイヤーについてくるようにする方法」をご紹介します。
はじプロとは?
『ナビつき! つくってわかる はじめてゲームプログラミング』
2021年6月11日に任天堂より発売されたNintendo Switch用ソフトです。
不思議な生き物「ノードン」同士をつなげてゲームがプログラミングできます。
また、「ナビつきレッスン」モードではとても分かりやすくプログラミングを解説してもらえるので、初心者の方でも楽しくプログラミングが学べます。
プレイヤーの移動プログラム
はじプロの基本中の基本となりますが、まずスティックノードンとヒトノードンをつなぎ、プレイヤーが操作できるようにします。

ついでにダッシュもできるようにしておきます。
例えば、Bボタンが押されている場合にのみヒトノードンの移動(前後・左右)ポートに入力される数字が大きくなるようにすると、ダッシュができるようになります。


マッピングノードンの出力はんいを1.00〜2.00にしておきます。
こうすると、Bボタンが押されていないときは1.00を、押されているときは2.00を出力するようになります。
マッピングノードンと各スティックノードンを、かけ算のけいさんノードンにつなぎます。
Bボタンが押されていない場合は
〈スティックノードンの出力値〉×〈1.00〉となり、値がそのまま出力されますが、
Bボタンが押されている場合は
〈スティックノードンの出力値〉×〈2.00〉となり、値が2倍になります。
つまり、ヒトノードンに入力される値が増える=ダッシュする!ということになります。
UFOの追尾プログラム
続いて、プレイヤーについてくるUFOのプログラムを作っていきます。
別にUFOではなくヒトでもいいんですけど、UFOがついてきたほうが可愛いのでUFOにしました。

プレイヤーについてこさせるには、ヒトとUFOの距離をはかり、その差を埋めるように移動させます。
距離をはかるには、位置センサーノードンを使います。

これをヒトノードン、UFOノードンにれんけつさせます。


ややこしくなりますので、ワイヤーワープノードンを使って整理しておきます。
ヒトの位置のX、Y、Zの出力ポートをワイヤーワープ:入口のX、Y、Zに、

UFOの位置のX、Y、Zの出力ポートをワイヤーワープ:入口のU、V、Wにつないでおきます。

それから、それぞれのX、Y、Zの差を引き算のけいさんノードンを使って求めます。
〈ヒトの値〉−〈UFOの値〉としたいので、
けいさんノードンの上のポートに〈ヒトの値〉のワイヤーワープ:出口
けいさんノードンの下のポートに〈UFOの値〉のワイヤーワープ:出口
をそれぞれつないでください。

これらの出力結果をUFOノードンにつなぎます。
わかりやすくするために、またワイヤーワープノードンを使います。
ID(アルファベット)はなんでもいいですが、既に使用しているIDと被らないものにしておきます。

それから、UFOノードンの
前後ポートにC
左右ポートにA
上下ポートにB
のワイヤーワープ:出口をつないでください。
(間違えないように!)


図のように、
Xが左右
Yが上下
Zが前後
をつかさどっているためです。
完成形はこちらです。

無事についてきています!
+α
UFOがついてくるようにはなったのですが、ちょっと近づきすぎている感じなので……
一定の距離まで近づいたら移動を止めさせるように調整します。
けいさんノードンを使ったプログラミングもあるらしいですが、今回は「さわっているセンサーノードン」を使ってシンプルにやってみます。

こいつをヒトノードンとれんけつさせます。


ヒトノードンとれんけつさせることにより、ヒトを囲うようにセンサー(白い線)がくっついてきます。

さわっているセンサーにチェックするモノ(今回はUFO)が触れた場合、1.00を出力します。
続いて、さわっているセンサーノードンの出力を「NOTノードン」につなぎます。

NOTノードンは、
入力が0.00の場合は1.00を、
0.00以外の場合は0.00を出力します。
つまり、
UFOがセンサーに触れていない場合は1.00を、
センサーに触れていると0.00を出力することになります。
NOTノードンの出力と、UFOの移動プログラミングで呼び出したけいさんノードンを、またかけ算のけいさんノードンにつなぎます。


かけ算では0に何をかけても0になるため、
NOTノードンから0.00が出力されている=UFOがセンサーに触れている場合はかけ算の結果は0。
UFOの移動ポートには0.00が入力されるため、動かなくなります。
ちょっと挙動不審ですが、とりあえずプログラムは完成しました!
おわりに
今回はUFOがついてくるようにする方法をご紹介しました。いかがでしたでしょうか。
ここからは余談です↓
前回「(はじプロに)熱中した」とか書いておきながら、やるべきことが山積みで最近全くプレイできていないんですよね……。他のゲームも然り。
やりたいことも挑戦したいこともいっぱいあるのですが、やはりスケジュールの兼ね合いや体力の都合で、どうしても全部の事柄をこなすのは難しいです。
以前の私なら「思い通りにいかないからもう全部やめる!!」と投げやりになっていたと思います(そもそも無茶な計画を立てていたのが原因なのですが)。
しかし、manabyCREATORSに通所してからは、スタッフさんとの面談や会話を通じて
「焦らないでいい、ちょっとずつでいい」という風な考え方に変わってきました。
心なしか、そういう気持ちでいる時のほうがよっぽど作業や制作がはかどっている気がします。
要するに、
「焦らずに目の前のことに集中し、少しずつでもタスクをこなしていく」
っていうのを行動規範に頑張っていきたい!という話でした。
本題に戻りますが!
次回はカメラワークについての記事を書こうかな~と考えています。
(ただ、自分でも理解できているか怪しいくらい複雑な内容なので、時間がかかるか、最悪お蔵入りになるかも…..。)
最後までご覧いただきありがとうございました。
めのね