課題1: コードの基本構造を理解する

目的: 提供されたコードを読み、各クラスの役割とゲームの基本的な流れを理解する。

ステップ:

ゲームの目的を理解する:

概要: プレイヤーはバスケットを操作してリンゴを集め、爆弾を避ける。リンゴを集めるとポイントが増え、爆弾に当たるとポイントが減少する。

各クラスの役割を確認する:

BasketController: バスケットの移動とアイテムとの衝突処理を担当。

GameDirector: ゲーム全体の管理(タイマー、スコア、アイテムの生成パラメータ調整)を担当。

ItemController: アイテム(リンゴや爆弾)の動作(落下速度、破壊処理)を担当。

ItemGenerator: アイテムの生成と出現パターンの管理を担当。

コードにコメントを追加する:

各クラスやメソッドに適切なコメントを追加し、コードの動作を明確にする。

例:

public class BasketController : MonoBehaviour
{
    public AudioClip appleSE; // リンゴ取得時のサウンド
    public AudioClip bombSE;  // 爆弾取得時のサウンド
    AudioSource aud;          // AudioSourceコンポーネント
    GameObject director;     // GameDirectorオブジェクトへの参照

    void Start()
    {
        Application.targetFrameRate = 60; // フレームレートを60に設定
        this.aud = GetComponent<AudioSource>(); // AudioSourceコンポーネントを取得
        this.director = GameObject.Find("GameDirector"); // GameDirectorオブジェクトを検索
    }

    void OnTriggerEnter(Collider other)
    {
        if(other.gameObject.tag == "Apple")
        {
            this.aud.PlayOneShot(this.appleSE); // リンゴ取得時のサウンド再生
            this.director.GetComponent<GameDirector>().GetApple(); // GameDirectorにリンゴ取得を通知
        }
        else
        {
            this.aud.PlayOneShot(this.bombSE); // 爆弾取得時のサウンド再生
            this.director.GetComponent<GameDirector>().GetBomb(); // GameDirectorに爆弾取得を通知
        }
        Destroy(other.gameObject); // 取得したアイテムを破壊
    }
    
    void Update()
    {
        float moveDistance = 1.0f; // 移動する距離(1マス)
        Vector3 newPosition = transform.position;

        if(Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if(Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                float x = Mathf.RoundToInt(hit.point.x);
                float z = Mathf.RoundToInt(hit.point.z);
                transform.position = new Vector3(x, 0, z); // バスケットの位置を更新
            }
        }
    }
}

学習ポイント:

  • クラスとメソッドの役割を理解する。
  • コードにコメントを追加することで、可読性と理解度が向上する。

Unity

Posted by hidepon