自動運転プログラムのしくみ【ノードンガイド】

自動運転プログラムのしくみ【ノードンガイド】 ノードンガイド

本記事は『ナビつき!つくってわかる はじめてゲームプログラミング』ノードンガイド「自動運転プログラムのしくみ」の内容まとめです。

クルマの正面に壁があると自動で左右に避けて走る仕組みと、アクセルの自動化を解説しています。

スポンサーリンク

自動運転のプログラム

追加条件:レッスン6のステップ5をクリアする

登場する主なノードン
クルマノードンクルマ モノノードンモノ さわっているセンサーノードンさわっているセンサー
Yボタンで前進するクルマ

ゲーム画面には1台のクルマが停まっています。Yボタンを長押ししてクルマを前進させてみましょう。カーブするコースの壁が目前に来ると、勝手に右に曲がるようプログラムされています。

壁に当たりそうになると勝手に右に曲がる

今回はこのように壁を勝手に避けて進む自動運転プログラムの解説です。

正面に壁があると右に曲がるプログラム画面の全体
正面に壁があると右に曲がるプログラム

自動で壁を右に避けるプログラムは実にシンプル。まずコースを形づくる直方体のモノノードンたちがいます。それからクルマノードン、クルマを前進させるボタンノードン、クルマを撮影し続けるカメラノードン。そしてさわっているセンサーノードンです。

さわっているセンサーはクルマノードンの正面に連結し、直方体をチェックしています。すなわち、クルマが前進してセンサーが直方体のモノに触れると、さわっているセンサーがシグナルとして1.00の数を出力します。

次に注目したいのがさわっているセンサーとクルマノードンを繋ぐもう1本のワイヤー。センサーとハンドルポートを繋いでいますよね。さわっているセンサーの1.00という数はクルマのハンドルポートに送られ、クルマが右に曲がっていたというわけです。

  1. クルマの正面にくっついたセンサーが壁に触れる
  2. センサーから1.00の数がクルマのハンドルポートへ送られる
  3. クルマが右に曲がる

クルマが右に曲がるとセンサーが壁から離れることになるので、シグナルは出力されなくなります。壁があれば右に曲がり、壁がない時は真っすぐ進むということ。

さわっているセンサーの設定のふるまいの見えるをオンにして確認してみましょう。

さわっているセンサーをゲーム画面で確認する

クルマの正面にうっすらと見える白いワクがセンサーです。このセンサーが壁に当たるとクルマは右に曲がります。

左右に曲がれるようにする

今のままではクルマは右にしか曲がれません。左右に曲がれるようプログラムを改良しましょう。左右に曲がるために必要なことは何かというと。

  • ハンドルポートにプラスの数が入力されると右に曲がる
  • ハンドルポートにマイナスの数が入力されると左に曲がる

以上がクルマノードンのハンドルのルールです。プラスの数は入力できているので、マイナスの数をどうやって入力するかを考えなければいけません。

クルマが自動で左右に曲がるようになるには

正解はさわっているセンサー2つを、クルマの正面に左右にズラしてくっつけ、片方のセンサーはプラスの数を、もう片方はマイナスの数を伝えるようにするです。

2つのセンサーを使えば、壁の向きによって違うセンサーが当たるようになるので、当たったセンサーによって左右どちらに曲がるかを決められます。

それではさっそく2つのセンサーを正しく設置してみましょう。

2つのセンサーのれんけつ方法
2つのセンサーのれんけつ面
  1. 2体のさわっているセンサーをクルマの正面に左右にズラして置く
  2. 球のモノノードンをクルマの正面にれんけつする
  3. 左のセンサーをモノノードンにれんけつする(れんけつ面X+/X-)
  4. 右のセンサーをモノノードンにれんけつする(れんけつ面X-/X+)

今回はモノノードンを間に挟んで2つのセンサーを連結しました。左のセンサーはモノの左側にくっつき、右のセンサーはモノの右側にくっついています。つまりクルマの左斜め前と右斜め前にセンサーを取り付けたことになります。

ゲーム画面でセンサー2つの位置を確認する

ゲーム画面で確認すると、2つのセンサーがクルマの斜め前にきちんとくっついているのが分かりますね。

センサーの位置はこれでOK。次はクルマが障害物を避けて左右に曲がるようにプログラムしていきます。

左に曲がるにはマイナスの数をハンドルポートに伝える必要がありますが、さわっているセンサーはマイナスの数を出力できません。そこで今回は、引き算を使って数をマイナスにします

自動で左右に曲がるプログラム
  1. 「-」のけいさんノードンを呼び出す
  2. 左のさわっているセンサーをけいさんノードンの上ポートに繋ぐ
  3. 右のさわっているセンサーをけいさんノードンの下ポートに繋ぐ
  4. けいさんノードンをクルマのアクセルポートに繋ぐ

-のけいさんノードンは上ポートの入力から下ポートの入力を引き算した結果を出力します。さわっているセンサーはセンサーが対象に触れると1.00を出力し、何も触れていない間は0.00になるので、

  • 左のセンサーが触れると「1-0=1」を出力
  • 右のセンサーが触れると「0-1=-1」を出力

以上の計算結果がクルマのハンドルポートに伝わります。けいさんノードンの働きで、「左のセンサーが触れるとプラスの数、右のセンサーが触れるとマイナスの数を伝える」が実現できました。2つのセンサーに何も触れていない時は0.00のまま、クルマは直進を続けます。

左右に曲がるようになったクルマ

クルマはYボタンで前進し、左のセンサーが壁に触れると右に曲がり、右のセンサーが壁に当たると左に曲がります。障害物を自動で左右に避けて進むプログラムの完成です。

アクセルも自動にする

アクセルの自動化
  1. ボタンノードンを削除する
  2. 定数ノードンをクルマのアクセルポートに繋ぐ

ボタンノードンの代わりに定数ノードンを使えば、アクセルポートにプラスの数を入力し続けられます。これでアクセルも自動化できます。

最後に

最後に自動運転プログラムの要点をまとめておしまいです。

  • 2体のさわっているセンサーノードンを使う
  • モノノードンを間に挟んでクルマの斜め前にセンサーを連結する
  • クルマノードンのハンドルは、プラスの数で右に、マイナスの数で左に曲がる
  • 2体のさわっているセンサーを「-」のけいさんノードンに繋ぎ、計算結果をハンドルポートに送るようにする
  • アクセルも自動化する時は定数ノードンが最適

大切なのはセンサーノードンの連結位置と、さわっているセンサーの出力をマイナスの数に変換するためのノードンです。この自動化テクニックは敵キャラクターを自動で動かす時にも使えます。

以上、ノードンガイド「自動運転プログラムのしくみ」の内容と解説でした。

れんけつ面の設定の確認はこちら。

ノードンガイドの一覧はこちら。


本記事に使用しているゲーム画像や著作権および商標権、その他知的財産権は、当該コンテンツの提供元に帰属します。© Nintendo

ノードンガイド
スポンサーリンク

Amazonでのお買い物は、Amazonギフト券をチャージして購入するのがお得です。チャージするだけで最大2.5%のポイントが貰えます。

プログラミングを本で学ぶ

Amazon APIのアクセスキーもしくはシークレットキーもしくはトラッキングIDが設定されていません。「Cocoon設定」の「API」タブから入力してください。
Amazon APIのアクセスキーもしくはシークレットキーもしくはトラッキングIDが設定されていません。「Cocoon設定」の「API」タブから入力してください。
この記事を書いた人
ぷろみーちゃん

Switchゲーム大好きな成人女。switchソフト『ナビつき!つくってわかるはじめてゲームプログラミング』攻略中。更新遅くてごめんなさい。よければリピーターになってください!(2021/6/1開設)

ぷろみーちゃんをフォローする

コメント

タイトルとURLをコピーしました