課題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); // バスケットの位置を更新
}
}
}
}
学習ポイント:
- クラスとメソッドの役割を理解する。
- コードにコメントを追加することで、可読性と理解度が向上する。
ディスカッション
コメント一覧
まだ、コメントがありません