Unityで近い場所にあるオブジェクト・同じ色のオブジェクトだけをつなぐ方法 | Unity入門の森 ゲームの作り方

Unityで近い場所にあるオブジェクト・同じ色のオブジェクトだけをつなぐ方法

Unityパズルゲームの作り方


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

この記事はUnityパズルゲームの作り方講座の第8回目です。

「Unityで近い場所にあるオブジェクト・同じ色のオブジェクトだけをつなぐ方法」を習得していきましょう。他のゲームにも活かせる条件分岐の作り方を実践していきます。

第7回目に作り切れなかった、つながっている3つ以上の同じボールをなぞると消える処理が完成します。

第7回ではボールの種類・色を増やしてバリエーション豊かなアクションパズルゲームが作れるように改造しました。

前回の記事↓

ボールの種類を増やす/ボールが3つ以上揃ったら消去する処理
前回の第6回の記事では同じ色のボールをなぞって消す処理を作りました。 前回の記事↓ 今回の第7回と次回の第8回では、第6回で作成した処理を改良します。 つながっている3つ以上の同じ色のボールをなぞると消える処理を作っていきます。 記事前半で...

今回は次の2項目を作成していきます。

  • 近くのボールを検出する処理
  • 違うボールをなぞれないようにする処理

【Line登録者限定のプレゼントもあるよ!】

近くのボールを検出する処理をUnityで作る方法

近くのボールを検出するために、ボール1つの選択範囲を広げることを考えていきます

選択範囲とは、講座の第2回で説明したコライダーのことです。ボールのコライダーを追加して選択範囲を広げてみましょう。

まずは、プレハブのBallをダブルクリックしてBallのみ表示されるようにしてください。

そして、Ballの子オブジェクトとして空のゲームオブジェクトを作成して、Collisionという名前にしましょう。そして、次のようにSphere Colliderを設定してください。

ここで、Sphere ColliderのRadius(半径)を0.8に設定すると、ボールの周囲に緑色の枠が表示されることが確認できます。これがボールの周囲にできる新しい衝突判定の範囲となります。

しかし、この状態で実行すると新しく作成したSphere Colliderの分だけ衝突判定が広くなってしまうため、ボール間に隙間ができてしまいます

そのため、次のようにSphere ColliderのisTriggerにチェックを入れてください。

これにより、新しいコライダーでは実際の衝突はせずに衝突判定のみ実行させることができるようになります。

それでは、TouchManager.csのif(Input.GetMouseButton(0))の中身を以下のように書き換えてください。

追加した部分は、「ボールをタッチしていない時は消去判定を行う」の部分です。

タッチした数はh.Lengthで取得できるため、elseでくくった範囲がタッチしていない状態(タッチしている数が0個 → h.Length == 0のとき)であることがわかります。

この状態で実行してみましょう。次のように何も触れていないとき選択が解除される様子が確認できます。

 

ゲームクリエイター専門学校の資料請求はこちら
【学歴不問・高卒、元ニートでも挑戦できる】

違う色のボールをなぞれない・同じ色のオブジェクトだけがつながるようにする処理

それでは、違う色のボールをなぞれないようにする処理を作成していきましょう。

TouchManager.csのUpdate関数を次のコードに書き換えてください。

追加した部分は2つあります。まず、if文の中の次のコードです。

これを使うことにより、最初に選択したボールの種類(touchBallList[0].GetComponent<BallObject>().color)と現在選択しているボール(h[0].collider.GetComponent<BallObject>().color)が同じかどうかを判別できます。

2つ目は次のコードです。

こちらのif文の中を分割して読み解くと以下の条件式が組み合わされていることが分かります。

  • 「h[0].collider.tag==”Ball”」でタッチしたゲームオブジェクトがボールである
  • 「touchBallList[0].GetComponent<BallObject>().color!=h[0].collider.GetComponent<BallObject>().color」で最初のボールの色と選択したボールの色が一致していない

この二つを組み合わせると「タッチしたボールの色が最初のボールの色と一致していない場合」実行する条件式であることが分かります。

この状態で実行してみましょう。次のように、種類が違う場合にボールの選択が解除される様子が確認できます。

おさらいと次回予告

今回で、近くにある同じ色のボールを消すというゲームのメイン部分が完成しました。

次回は、追加要素として、周囲のボールを一気に消す爆弾の設定をしていきたいと思います。

次回の記事↓

ボールを一気に消す爆弾とアニメーションの作り方
第9回では、ボールを一気に消す爆弾を作成します。また、ボールが消える時のエフェクトも一緒に作成していきます。 前回の記事を読みたい方はこちら↓ 爆弾の作成 爆弾は、スマホ系のパズルゲームでよく用いられるアイテムで、周囲のボールを一気に消した...

 

パズルゲーム講座が動画になりました。

動画も合わせてチェック!



Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

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