基本知識

【Unity2Dサンプルゲーム】爆弾を避けよ!~7~

Unityサンプルゲームの「爆弾を避けよ!」の7

前回の爆弾を避けよ!~6~の続きです。

前提条件

サンプルのおわり

前回のおわりまでです。

この記事の「爆弾を避けよ!」の作成の流れ

  • 当たり判定のはなし
  • 当たり判定を作る

こちらを行っていきます。

当たり判定のはなし

このさき【Bakudann】と【Player】がぶつかったときに【Player】が破壊される処理を行っていきます。でもぶつかったことがわからないといつ破壊するかわかりません。

そのぶつかったこと検出する仕組みのことを当たり判定といいます。当たり判定がなければ、オブジェクトは当たったときの処理を実行できません。

当たり判定を【Bakudan】と【Player】につけて、ぶつかったことを検出します。当たり判定をつくるために【Physics】を使います。

【Physics】を使えば、Colliderコンポーネントをアタッチしたオブジェクト同士が衝突したときに、【Physics】が当たり判定をしてくれます。

【Physics】を使った当たり判定にはColliderモードとTriggerモードがあります。

  • Colliderモード(衝突)
  • Triggerモード(すり抜ける)

Colliderモードだと物理的な当たり判定で、オブジェクト同士がぶつかり、衝突検出+衝突応答をも実行されます。Triggerモードだとは検出だけ行い、あとはすり抜けます。

今回は爆弾にぶつかったプレイヤーを消します。爆弾はそのまますり抜けさせます。Triggerモードを使います。

【Physics】の当たり判定を作るには必要な条件があります。

  • 判定したいオブジェクトすべてにColliderコンポーネントがアタッチされている
  • 当たり判定したいオブジェクトのどちらか一方には最低限Rigidbodyコンポーネントがついている(両方でもOK)

この2つの条件がなければ、Triggerモードが使えません。

また物理挙動を(Colliderモード)させたい場合は、判定したいオブジェクトすべてにColliderコンポーネントとRigidbodyコンポーネントがアタッチしてある状態でなければなりません。

当たり判定のもっと詳しい説明の記事書きます。

当たり判定をつくる

【Player】に【Rigidbody 2D】をつける

【Player】にUnityで【Rigidbody 2D】をつける

【Hierarchy】→【Player選択】→【Inspector】→【Add Component】→【Rigidbody 2D】

当たり判定するにはぶつかるオブジェクトすべてにColliderコンポーネントと、どちらか片方にRigidbodyコンポーネントをつけることが条件でした。

【Player】と【Bakudan】にはすでにColliderコンポーネントはついているので、残りのRigidbodyコンポーネントをつけていきます。

【Bakudan】をTriggerモードにする

Unityで【Bakudan】をTriggerモードにする

【Hierarchy】→【Bakudan選択】→【Inspector】→【Circle Collider 2D】→【Is Triggerにチェックをする】

これで爆弾がすり抜けます。

ぶつかる2つのオブジェクトに【IsTrigger】をチェックしなくても、OnTriggerは実行されるそう。この辺の当たり判定の話は他の記事にまとめます

【PlayerController】スクリプトに記述する

【PlayerController】スクリプトを開いて記述してください。【Scripts】ファイル内の【PlayerController】スクリプトをダブルクリックすれば開けます。

PlayerController.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour {

    // Use this for initialization
    void Start () {
       
    }
   
    // Update is called once per frame
    void Update () {
       
    }

    // 右矢印ボタンを押したら移動するメソッド
    public void RightArrowDown()
    {
        transform.Translate(2, 0, 0);
    }

    // 左矢印ボタンを押したら移動するメソッド
    public void LeftArrowDown()
    {
        transform.Translate(-2, 0, 0);
    }

    // 衝突した瞬間にオブジェクトを破壊
    void OnTriggerEnter2D(Collider2D collision)
    {
        Destroy(gameObject);
    }

}

OnTriggerEnter2D衝突開始時

    // 衝突した瞬間にオブジェクトを破壊
    void OnTriggerEnter2D(Collider2D collision)
    {
        Destroy(gameObject);
    }

衝突した瞬間にオブジェクトを破壊しています。衝突したら【Player】を破壊するってことです。

ゲームを実行してみる

Unityでゲームを実行してみる

【Bakudan】が【Player】に衝突した瞬間に、破壊されました。こうなっていればOKです。

おわりに

ゲームの終了時

では次の爆弾を避けよ!~8~に行きましょう。

Unityサンプルゲームの「爆弾を避けよ!」の8
【Unity2Dサンプルゲーム】爆弾を避けよ!~8~Unity2Dサンプルゲーム『爆弾を避けよ!』を作っていきます。この記事では爆弾を量産していきます。爆弾を量産して、様々な位置から爆弾をおとしていきます。...
ABOUT ME
さぎのみや
さぎのみや
Unityでのゲーム開発を手助けするメディア「Unishar-ユニシャー」運営者。UnityとBlenderを使っています。好きな人は芯がある人です。シェアしてください( ・∇・)→Amazonほしいものリストスタバおごる
Unityでゲーム開発をしたいあなたへ

Unityとは?から基本操作まで学べる

>>ゼロから始めるUnity

プログラミングとは?C#の基本まで学べる

>>ゼロから始めるC#

実際にUnityでゲームを作る

>>サンプルゲーム一覧

ボタンを押すとその記事にいきます。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください