タッチ位置へモノを移動する、タッチしたモノを壊す ナビつき!つくってわかる はじめてゲームプログラミング 逆引きパターン集

はじプロ

タッチ位置へモノを移動させ、そこにあるモノを壊すサンプル

エキストラチェックポイントNo.21「タッチ位置へ GO!」のプログラムを使えば、タッチされた位置にモノノードンを移動することができる。

ここではそのプログラムを応用し、タッチした位置にあるモノノードンを壊すサンプルを紹介する。
これを使えばタッチ位置にモノノードンを出現させたり、もぐらたたきのようなプログラムを作ることができる。

😊ノードン一覧や逆引きパターンなど、「はじプロ」関連の記事の一覧はこちらからどうぞ

完成図

プログラム全体像

操作方法

タッチすると、その位置に薄い円柱が移動してハコを壊す。
移動している途中にあるハコは壊さない。

解説

全体的なしくみ

タッチ位置へ GO!」の仕組みで、円柱がタッチ位置へ移動するようにしている。

この方法では、円柱はスライド移動しており、タッチ位置へ瞬間移動(ワープ)しているわけではない。
そのため、タッチ位置で何らかの処理を行いたい場合(今回の場合はハコを壊したい)、タッチ位置まで移動が完了したのを確認してから処理する必要がある。

そこで、円柱にれんけつした位置センサーノードンを使って、タッチ位置まで移動が完了したかどうかを判断し、結果をモノをこわすノードンへ送るという方法を使っている。
ただ、位置が完全に一致するまでスライドするのを待つと、タッチしたタイミングから移動完了と判断するまでにタイムラグが出てしまうため、ある程度位置が近ければ移動完了と判断するようにしている。

プログラムの説明

タッチ位置への移動プログラム

下記のプログラムで、円柱ノードンがタッチ位置へ移動するようにしている。

タッチ位置へスライドするプログラム

タッチ位置から実際のスライド先の位置を算出する必要があり、タッチ位置ノードンから出力されたX座標、Y座標をそれぞれマッピングノードンで変換し、フリースライドノードンのX座標、Z座標へ入力している。
このサンプルでは、スライド先の位置は移動が完了したかどうかの判定でも使うので、ワイヤーワープノードンを使って整理している。

スライド先の位置の位置を基準にしているため、このはゲーム画面の中央から動かさないこと。
また、スライド先の位置へのマッピングはゲーム画面ノードンの設定によっても変わってくるが、ここでは説明は割愛する。

ゲーム画面ノードンマッピングノードン円柱の設定は以下のようにしている。

ゲーム画面ノードンの設定
ゲーム画面ノードンの設定
X座標に対するマッピングノードンの設定
X座標に対するマッピングノードンの設定
Y座標(Z座標)に対するマッピングノードンの設定
Y座標(Z座標)に対するマッピングノードンの設定
球の設定
モノノードン(球)の設定
円柱の設定
モノノードン(円柱)の設定

タッチ位置への移動が完了した後でモノを壊すプログラム

下記で、円柱ノードンスライド先の位置まで移動が完了したかを判断し、モノをこわすノードンヘ信号を出している。

スライドが完了したことを判断するプログラム

円柱位置センサーノードンをれんけつし、現在位置を取得している。
円柱の現在位置とスライド先の位置が同じなら移動完了だが、 厳密に判断すると位置が一致するまでに時間がかかり、タッチした瞬間ではなくなってしまう。そのため、だいたい同じだったら移動完了と判断することとし、今回は位置の差が -0.4~0.4 の範囲内ならOKと考えることにする。
また、差を範囲で判断するのが面倒なので、絶対値ノードンで差を絶対値にしてから、0.4未満かどうかで判断する。
X座標、Z座標の両方ともこの条件を満たせば「タッチ位置への移動が完了した」と判断し、モノをこわすノードンへ信号を出すようにしている。

このOKを判断する範囲を狭くする(定数ノードンの数値を0に近づける)ほどタッチの精度を上げられる
精度を上げるほどOKと判断されるまでに時間がかかり、精度を下げすぎると現在位置の近くをタッチしたときにずっと移動完了の信号が出たままになる。この点を考慮しながら、自分のプログラムに合わせて調整すると良い。

モノをこわすノードンハコだけを壊して欲しいので、そのように設定している。

モノを壊すノードンの設定

これでタッチ位置のハコノードンを壊すプログラムは完成!

(応用)タッチ位置にモノを瞬間移動する、モノを出現する

今回のサンプルでモノをこわすノードンに入力している信号を使えば、モノを壊す以外にもタッチ位置に対する処理ができる。

モノをこわすノードンの代わりに、ワープ入り口ノードンワープ出口ノードンと組み合わせれば、タッチ位置にモノを瞬間移動させることができる。また、モノ発射ノードンを使えば、モノを出現させることもできる。

お疲れさまでした。