【はじプロ】つまづきやすいポイントを解説してみた(カウンターノードンと時間表示を攻略)

【はじプロ】つまづきやすいポイントを解説してみた(カウンターノードン・時間計算を攻略) はじプロ解説

お疲れ様です。YUmarunosuke(ゆうまるのすけ@YUmaru16061307)です。

今回は、「ナビつき!つくってわかる はじめてゲームプログラミング」
(はじプロ)の”カウンターノードン”と時間表示の解説
をします。

「はじプロ」のことを知らない方は、是非過去の記事をご覧ください。

レッスン2でカウンターノードンが登場しました。

『数えるのが得意なノードン』と説明されています。

カウンターノードン初登場の回
レッスン2「コロコロボール」より カウンターノードン初登場の回

今後フリープログラミングで自作ゲームを作るうえで、
最も使用するノードンのうちの1つだと思います。

また、ゲーム内で時間を使ったギミックを作る際に、
カウンターノードンを使った時間計算もよく使われます。

タイムを競うゲームは、

ほかの人には負けない!

と競い合いたくなる意欲が湧きますし、

制限時間が設定されるゲームは、

操作間違えた!これどうすればいいんだ!?(あたふた)

と、ハラハラ感が出て面白いゲームになりますよね。

ゲームによくある基本的な機能ですので、

ポイントを絞って解説します。是非ご覧になってください。

この記事はこんな人に読んでもらいたい
  • ナビつきレッスンを何となく進めてしまっていたあなた
  • カウンターノードンをどのように使えるかイメージできていないあなた
  • 自作ゲームに時間を使ったギミックを作りたいあなた
この記事を読めばこんなことがわかる
  • カウンターノードンは数を数えるノードン
  • 1/60秒ごとに情報は更新される
    =1秒間で60回の処理が行われる
  • マッピングノードンを組み合わせて1秒を作り上げよう

カウンターノードンとは?数を数えていく役割です

カウンターとは数を数える機能をもつものです。

そのままですが。

しかし、数を数える、といっても、いろいろな数があります。

  • 壊したモノを数える
  • ボタンを押した回数を数える
  • 時間を数える
    • 経過した時間を数える
    • 残り時間を数える

などなど・・・

これらの数えかたをどのように再現するか、1つずつ解説をしてみました。

覚えておきたい前提:1/60秒ごとに情報は更新される

マッピングノードンの解説記事でも記載していますが、
ノードンガレージで設定している処理は、1/60秒ごとに行われています。

ゲーム業界(特に格闘ゲームなど)では、「1フレーム(=1/60秒)」と呼ばれたりします。

例えば、下の図のように、定数ノードンとカウンターノードンをつなげます。

定数ノードンとカウンターノードンの仕組み

すると、1/60秒ごとに定数ノードンは出力1を投げます。

1/60秒後に定数ノードンがカウンターノードンへ1を渡します。

カウンターノードンはその出力1を受け取ります。

定数ノードンが渡した1をカウンターノードンが受け取ります。

次の1/60秒(2/60秒目)には、さらに定数ノードンは出力1を投げます。

さらに1/60秒後に、また定数ノードンがカウンターノードンへ1を渡します。

カウンターノードンはさらにその出力1を受け取り、合計である2を蓄えます。

定数ノードンが渡した1をカウンターノードンが受け取り、カウンターが2になります。

これを1秒続けると、カウンターノードンは60の出力を受け取り、蓄えることになりますね。

1秒後には定数ノードンが渡した1が60個あつまり、カウンターが60になります。

つまり、カウンターノードンへの入力を適切に設定しないと、
ビックリするくらい大きな値を短時間でカウントしてしまう
ことになりかねません。

次の章から順々に覚えていきましょう。

解説:カウンターノードンの使用例

使用例①:モノが壊れたかずを数える

レッスン2「コロコロボール」にて作る、リンゴを数える仕組みと同じものです。

リンゴが壊れると、
ものがこわれたしゅんかんノードンが1/60秒だけ1を出力します

それをカウンターノードンが受け取ります。

リンゴが壊れると、ものがこわれたしゅんかんノードンが1/60秒だけ1を出力します。それをカウンターノードンが受け取ります。
レッスン2「コロコロボール」より、モノがこわれたしゅんかんノードンとカウンターノードン

その後は、次のリンゴが壊れない限り、
ものがこわれたしゅんかんノードンは出力を一切投げません。

これを繰り返すことによって、リンゴが壊れた個数を数えることができます。

使用例①(応用編):ボタンを押した回数を数える

応用編として、カウンターノードンを使うことで、
ボタンを押した回数を数える
ことができます。

このギミックは、レッスン5「謎解きの部屋」で使われています。
(さわっているノードンを使っていますが。)

2021/09執筆現在、さわっているノードンの仕様を詳細に調査できていないため、
今後追記して解説してみます。

使用例②:時間の表示

②-1:経過時間の表示

例えば、

「エキサイトレーシング」(レッスン6)にタイムを表示させたい!

なんてアイデアを形にすることができます。

どのように実現させるかというと、

  • あるべき姿:1秒後に1を表示させる
  • 手段:
    1. 1秒後(60/60秒後)にたまった60を1として表示させる
    2. 1秒おきに1を出力して表示させる

圧倒的に①のほうが簡単なので、①の仕組みを図解付きで解説します。

(①のほうが簡単というより、②を再現する方法が思い浮かびませんでした
まだまだ精進しないといけないですね。)

時間を表示させるプログラミング
マッピングノードンの設定

以上のプログラミングによって、「マッピングノードンの出力」に経過時間が表示されるようになります。
(参考に、カウンターノードンからの出力も表示するようにしました。)

マッピングノードンの出力が経過秒数を表します。

②-2:残り時間の表示

○○秒以内に脱出せよ!

みたいなゲームを作りたいときに使うことができます。

基本的な考え方は、
こちらも、レッスン2「コロコロボール」にて作る、リンゴを数える仕組みと同じものです。

表示したい時間は、

制限時間-経過時間

で表すことができます。

先程説明した経過時間の表示の仕組みに

最後制限時間と、引き算を加えればよいだけです。

制限時間と経過時間を引くことで、残り時間を求めることができます。

すると、残り時間の表示を行うことができます。

まとめ

今回は、 「ナビつき!つくってわかる はじめてゲームプログラミング」
(はじプロ)の”カウンターノードン”の解説
を行っていきました。

  • カウンターノードンは数を数えるノードン
  • 1/60秒ごとに情報は更新される
    =1秒間で60回の処理が行われる
  • マッピングノードンを組み合わせて1秒を作り上げよう

これを活用して、

  • ゲームにハラハラ感を加えるもよし
  • 残り○○秒になったら演出を変えるもよし

たくさんの活用方法が考えられますので、是非色々と試してみてください。

では、次の記事までごきげんよう。

コメント

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