【基本操作】ブロック崩し~2/2 オブジェクト制御【アクション】

●プレイヤー制御

▷スクリプト整理

スクリプト格納用のフォルダを作成します。

【スクリプト整理】スクリプト格納用のフォルダを作成
  1. プロジェクトの「Assets」を右クリックし、「作成>フォルダー」をクリック
  2. 「Scripts」と入力し、ENTERキーを押す

▷バー制御

スクリプト「Player」を作成し、バーに割り当てます。

【バー制御】スクリプト「Player」を作成し、バーに割り当てる
  1. プロジェクトの「Assets>Scripts」を右クリックし、「作成>C# スクリプト」をクリック
  2. 「Player」と入力し、ENTERキーを押す
  3. プロジェクトの「Player」をヒエラルキーの「Bar」にドラッグ&ドロップ
  4. CTRLキーを押しながらSキーを押す

▷スクリプト記述

プロジェクトの「Assets>Scripts>Player」をダブルクリックし、スクリプトを以下のように記述します。

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

public class Player : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float axisH = Input.GetAxis("Horizontal");
        float moveX = axisH * 30 * Time.deltaTime;
        Vector3 newPos = transform.position + new Vector3(moveX, 0, 0);

        newPos.x = Mathf.Clamp(newPos.x, -7.5f, 7.5f);

        transform.position = newPos;
    }
}

▷バー制御確認

左右キーでバーが壁まで移動することを確認します。

【バー制御確認】左右キーでバーが壁まで移動することを確認
  1. エディタ上中央の「▶」をクリック
  2. 左右キーでバーが壁まで移動することを確認
  3. エディタ上中央の「▶」をクリック

●オブジェクト制御

▷玉物理制御

玉に重力未使用のRigidbodyを割り当てます。

【玉物理制御】玉に重力未使用のRigidbodyを割り当てる
  1. ヒエラルキーの「Ball」をクリック
  2. インスペクターの「コンポーネントを追加」をクリックし、「Physics>Rigidbody」をクリック
  3. インスペクターの「Rigidbody>重力を使用」のチェックを外す
  4. CTRLキーを押しながらSキーを押す

▷玉反射

玉に物理マテリアルを割り当てて反射させます。
物理マテリアルは「動摩擦:0、静止摩擦:0、弾性力:1」、
衝突時の摩擦処理モードを(最小)、衝突時の弾性処理モードを(最大数)とします。

【玉反射】玉を「動摩擦:0、静止摩擦:0、弾性力:1」で反射させる
衝突時の摩擦処理モードは(最小)、衝突時の弾性処理モード(最大数)とする
  1. プロジェクトの「Assets>Materials」をクリック
  2. プロジェクト左上の「+」をクリックし、「物理マテリアル」をクリック
  3. 「Reflection」と入力し、ENTERキーを押す
  4. インスペクターを設定
  5. ・動摩擦(0)
  6. ・静止摩擦(0)
  7. ・弾性力(1)
  8. ・衝突時の摩擦処理モード(最小)
  9. ・衝突時の弾性処理モード(最大数)
  10. プロジェクトの「Reflection」をヒエラルキーの「Ball」にドラッグ&ドロップ
  11. CTRLキーを押しながらSキーを押す

▷玉移動方向

玉の回転Zを(45)に設定します。

【玉移動方向】玉の回転Zを(45)に設定
  1. ヒエラルキーの「Ball」をクリック
  2. インスペクターの「Transform>回転」を(0, 0, 45)に設定
  3. CTRLキーを押しながらSキーを押す

▷玉制御

スクリプト「Ball」を作成し、玉に割り当てます。

【玉制御】スクリプト「Ball」を作成し、玉に割り当てる
  1. プロジェクトの「Assets>Scripts」を右クリックし、「作成>C# スクリプト」をクリック
  2. 「Ball」と入力し、ENTERキーを押す
  3. プロジェクトの「Assets>Scripts>Ball」をヒエラルキーの「Ball」にドラッグ&ドロップ
  4. CTRLキーを押しながらSキーを押す

▷スクリプト記述

プロジェクトの「Assets>Scripts>Ball」をダブルクリックし、スクリプトを以下のように記述します。

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

public class Ball : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Rigidbody rb = GetComponent<Rigidbody>();
        rb.AddForce(transform.right * 20, ForceMode.Impulse);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

▷玉制御確認

玉が右上に向かって発射され、オブジェクト衝突時に反射することを確認します。

【玉制御確認】玉が右上に向かって発射され、オブジェクト衝突時に反射することを確認
  1. エディタ上中央の「▶」をクリック
  2. 玉が右上に向かって発射され、オブジェクト衝突時に反射することを確認
  3. エディタ上中央の「▶」をクリック

▷玉認識

タグ「Ball」を作成し、玉に割り当てます。

【玉認識】タグ「Ball」を作成し、玉に割り当てる
  1. ヒエラルキーの「Ball」をクリック
  2. インスペクターのドロップダウン「タグ」をクリックし、「タグを追加…」をクリック
  3. インスペクターのタグ右下の「+」をクリック
  4. 「Ball」と入力し、ENTERキーを押す
  5. ヒエラルキーの「Ball」をクリック
  6. インスペクターのドロップダウン「タグ」をクリックし、「Ball」をクリック
  7. CTRLキーを押しながらSキーを押す

▷ブロック制御

スクリプト「Block」を作成し、ブロックに割り当てます。

【ブロック制御】スクリプト「Block」を作成し、ブロックに割り当てる
  1. プロジェクトの「Assets>Scripts」を右クリックし、「作成>C# スクリプト」をクリック
  2. 「Block」と入力し、ENTERキーを押す
  3. ヒエラルキーの「Blocks>Block」右にある「>」をクリック
  4. プロジェクトの「Block」をヒエラルキーの「Block」にドラッグ&ドロップ
  5. ヒエラルキー左上の「<」をクリック
  6. CTRLキーを押しながらSキーを押す

▷スクリプト記述

プロジェクトの「Assets>Scripts>Block」をダブルクリックし、スクリプトを以下のように記述します。

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

public class Block : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            Destroy(gameObject);
        }
    }
}

▷ブロック制御確認

玉がブロックに衝突したらブロックが消える事を確認します。

【ブロック制御確認】玉がブロックに衝突したらブロックが消える事を確認
  1. エディタ上中央の「▶」をクリック
  2. ブロックに玉を衝突させる
  3. ブロックが消える事を確認
  4. エディタ上中央の「▶」をクリック

●ゲーム制御

▷ゲームオーバーUI作成

ゲームオーバー用のUIテキストを非アクティブで配置します。

【ゲームオーバーUI作成】ゲームオーバー用のUIテキストを非アクティブで配置する
  1. ヒエラルキー左上の「+」をクリックし、「UI>テキスト – TextMeshPro」をクリック
  2. TMP Importerの「Import TMP Essentials」をクリック
  3. TMP Importerを閉じる
  4. ヒエラルキーの「Text (TMP)」をクリック
  5. F2キーを押して「TextGameOver」と入力し、ENTERキーを押す
  6. インスペクターを以下のように設定
  7. ・RectTransform左上のアイコンをクリックし、「stretch – stretch」をクリック
  8. ・RectTransformの「左上右下」を(0, 0, 0, 0)に設定
  9. ・出力内容を「GameOver」に設定
  10. ・Font Styleの「B」をオンにする
  11. ・Auto Sizeにチェックを入れる
  12. ・VertexColorにあるカラーバーをクリックし、色の16進数を「FF00FF」に設定
  13. ・Alignmentの「Center、Middle」をオンにする
  14. ・Outlineにチェックを入れる
  15. ・OutlineのColorにあるカラーバーをクリックし、Rを(255)、Gを(0)、Bを(0)に設定
  16. ・OutlineのThicknessを(0.2)に設定
  17. インスペクター左上のチェックを外す
  18. CTRLキーを押しながらSキーを押す

▷ゲームオーバー制御

スクリプト「Crash」を作成し、破壊ゾーンに割り当てます。

【ゲームオーバー制御】スクリプト「Crash」を作成し、破壊ゾーンに割り当てる
  1. プロジェクトの「Assets>Scripts」を右クリックし、「作成>C# スクリプト」をクリック
  2. 「Crash」と入力し、ENTERキーを押す
  3. プロジェクトの「Crash」をヒエラルキーの「Walls>Crash」にドラッグ&ドロップ
  4. CTRLキーを押しながらSキーを押す

▷スクリプト記述

プロジェクトの「Assets>Scripts>Crash」をダブルクリックし、スクリプトを以下のように記述します。

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

public class Crash : MonoBehaviour
{
    public GameObject uiGameOver;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            Destroy(collision.gameObject);
            uiGameOver.SetActive(true);
        }
    }
}

▷ゲームオーバーUI割り当て

ゲームオーバー用UIテキストをCrashの参照に割り当てます。

【ゲームオーバーUI割り当て】ゲームオーバー用UIテキストをCrashの参照に割り当てる
  1. ヒエラルキーの「Walls>Crash」をクリック
  2. ヒエラルキーの「Canvas>TextGameOver」をインスペクターの「Ui Game Over」にドラッグ&ドロップ
  3. CTRLキーを押しながらSキーを押す

▷ゲームオーバー確認

玉の破壊ゾーン衝突で、玉が消えてゲームオーバーが表示される事を確認します。

【ゲームオーバー確認】玉の破壊ゾーン衝突で、玉が消えてゲームオーバーが表示される事を確認
  1. エディタ上中央の「▶」をクリック
  2. 破壊ゾーンに玉を衝突させる
  3. 玉が消え、ゲームオーバーが表示される事を確認
  4. エディタ上中央の「▶」をクリック

▷クリアUI作成

クリア用のUIテキストを非アクティブで配置します。

【クリアUI作成】クリア用のUIテキストを非アクティブで配置する
  1. ヒエラルキー左上の「+」をクリックし、「UI>テキスト – TextMeshPro」をクリック
  2. 「TextClear」と入力し、ENTERキーを押す
  3. インスペクターを以下のように設定
  4. ・RectTransform左上のアイコンをクリックし、「stretch – stretch」をクリック
  5. ・RectTransformの「左上右下」を(0, 0, 0, 0)に設定
  6. ・出力内容を「Clear」に設定
  7. ・Font Styleの「B」をオンにする
  8. ・Auto Sizeにチェックを入れる
  9. ・Vertex Colorのカラーバーをクリックし、色の16進数を「FFFF00」に設定
  10. ・Alignmentの「Center、Middle」をオンにする
  11. インスペクター左上のチェックを外す
  12. CTRLキーを押しながらSキーを押す

▷ブロック認識

タグ「Block」を作成し、ブロックに割り当てます。

【ブロック認識】タグ「Block」を作成し、ブロックに割り当てる
  1. プロジェクトの「Prefabs>Block」をダブルクリック
  2. ヒエラルキーの「Block」をクリック
  3. インスペクターのドロップダウン「タグ」をクリックし、「タグを追加…」をクリック
  4. インスペクターのタグ右下の「+」をクリック
  5. 「Block」と入力し、ENTERキーを押す
  6. ヒエラルキーの「Block」をクリック
  7. インスペクターのドロップダウン「タグ」をクリックし、「Block」をクリック
  8. ヒエラルキー左上の「<」をクリック
  9. CTRLキーを押しながらSキーを押す

▷スクリプト記述

プロジェクトの「Assets>Scripts>Crash」をダブルクリックし、スクリプトを以下のように記述します。

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

public class Crash : MonoBehaviour
{
    public GameObject uiGameOver;
    public GameObject uiClear;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        GameObject[] blocks = GameObject.FindGameObjectsWithTag("Block");
        if (blocks.Length == 0)
        {
            Destroy(GameObject.FindGameObjectWithTag("Ball"));
            uiClear.SetActive(true);
        }
    }

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ball"))
        {
            Destroy(collision.gameObject);
            uiGameOver.SetActive(true);
        }
    }
}

▷クリアUI割り当て

クリア用UIテキストをCrashの参照に割り当てます。

【クリアUI割り当て】クリア用UIテキストをCrashの参照に割り当てる
  1. ヒエラルキーの「Walls>Crash」をクリック
  2. ヒエラルキーの「Canvas>TextClear」をインスペクターの「Ui Clear」にドラッグ&ドロップ
  3. CTRLキーを押しながらSキーを押す

▷クリア確認

全てのブロックを壊したら玉が消えてクリアが表示される事を確認します。

【クリア確認】全てのブロックを壊したら玉が消えてクリアが表示される事を確認
  1. エディタ上中央の「▶」をクリック
  2. 全てのブロックを壊す
  3. 玉が消え、クリアが表示される事を確認
  4. エディタ上中央の「▶」をクリック

完成!

作成手順を書いた記事です。

   →紹介
   →1/2 オブジェクト構築
今▷ →2/2 オブジェクト制御

完全手順
※紹介と1~2の手順を1ページにまとめています。
 読み込みに時間がかかるかも知れません。

コメント

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