コードの説明
メニューを表示するにはスワイプしてください
プレイヤーコード
Start メソッドでの初期化
private void Start()
{
startPosition = transform.position;
}
目的: ゲーム開始時にプレイヤーの初期位置を保存。
プレイヤー位置のリスタート
public void RestartPlayerPosition()
{
transform.position = startPosition;
rb.velocity = Vector2.zero;
}
目的: プレイヤーの位置を開始位置にリセットし、速度をゼロに設定して動きを停止する。
Updateメソッドでのプレイヤー入力処理
private void Update()
{
Vector2 oldVelocity = rb.velocity;
if (Input.GetKeyDown(KeyCode.Space))
{
oldVelocity.y = 6;
}
oldVelocity.x = 4;
rb.velocity = oldVelocity;
}
目的: プレイヤーの入力(スペースキー)を検知し、y方向の速度を6に設定してプレイヤーを「ジャンプ」させ、x方向の速度を常に4に設定して右方向への移動を維持する。
衝突処理
OnCollisionEnter2D
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.collider.tag == "ground")
{
RestartPlayerPosition();
}
}
目的:タグが「ground」となっているオブジェクトと衝突した際にプレイヤーの位置をリセット。
OnTriggerEnter2D
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "win")
{
winPanel.SetActive(true);
SoundManager.instance.PlayEffect(1);
}
}
目的:タグが「win」となっているオブジェクトにプレイヤーが接触した際、勝利パネルを表示し、効果音を再生。
まとめ
- 移動:プレイヤーは右方向に継続的に移動し、スペースキーを押すとジャンプ;
- リスタート:地面と衝突するとプレイヤーの位置がリセット;
- 勝利:勝利トリガーに到達すると勝利パネルを表示し、効果音を再生。
SoundManager クラス
Start メソッド
private void Start()
{
if (instance == null)
{
instance = this;
}
else
{
Destroy(gameObject);
return;
}
DontDestroyOnLoad(gameObject);
}
目的:
シングルトンパターンを使用して、ゲーム内に SoundManager のインスタンスが一つだけ存在するようにする。DontDestroyOnLoad(gameObject) を使い、異なるシーン間でオブジェクトを保持する。
PlayEffect メソッド
public void PlayEffect(int index)
{
if (index >= 0 && index < effects.Count)
{
source.PlayOneShot(effects[index]);
}
}
目的:
整数型の index を受け取り、effects リストから再生する効果音を指定する。index が effects リストの有効な範囲内かどうかを確認し、source.PlayOneShot(effects[index]) を使って指定された効果音を再生する。
まとめ
- シングルトンパターン:
SoundManagerのインスタンスがゲーム内で一つだけ存在し、シーンをまたいで保持されることを保証; - 効果音の再生:
PlayEffectメソッドを使用し、effectsリスト内のインデックスを指定して効果音を再生; - オーディオソース:
AudioSourceコンポーネントを利用してオーディオクリップを再生。
WinPanel クラス
WinPanel クラスは、プレイヤーが勝利した際に表示されるUIパネルの機能を提供。メインメニューに戻る、またはレベルを再スタートするメソッドを含み、それぞれ効果音を再生し、適切なシーンを読み込む。
メソッド
ReturnToMainMenu メソッド
public void ReturnToMainMenu()
{
SoundManager.instance.PlayEffect(0);
SceneManager.LoadScene(0);
}
目的:
SoundManager.instance.PlayEffect(0) を使用してサウンドエフェクト(インデックス 0)を再生。SceneManager.LoadScene(0) を使用してビルドインデックス 0 のメインメニューシーンを読み込む。
RestartLevel メソッド
public void RestartLevel()
{
SoundManager.instance.PlayEffect(0);
SceneManager.LoadScene("Game");
}
目的:
SoundManager.instance.PlayEffect(0) を使用してサウンドエフェクト(インデックス 0)を再生。SceneManager.LoadScene("Game") を使用して "Game" という名前のゲームシーンを読み込む。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください