Skip to content

hhdfgg/yoketoruKDA

Repository files navigation

音符取り

講義中に作った"yoketoru"に要素を追加して作りました。

操作方法

マウス移動でパンプキンが移動、ゴーストはW・A・S・Dで移動します。                                   (Wで上、Aで左、Sで下、Dで右)

ゲーム説明

2体のプレイヤー(パンプキンとゴースト)を動かして音符を取りましょう!
クリア方法は音符をすべて取ることです。
飛行機にあたってしまうとゲームオーバーです。
時間経過と共にスコアは減っていくので、音符を素早くすべて取りクリアを目指しましょう!
 

使用素材

アセットストア

BGM・効果音

フォント

ライセンス

  • アセットストアの"Query-Chan" modelからゴーストを使用したのでライセンスロゴを掲載します。  

追加した点

  • タイトルにEキーでの説明を追加
    • シーン(Description)を新しく追加して、CanvasをTitleからコピー。
    • CanvasにTextで説明を追加。
    • DescriptionにDescriptionManagerを設定し以下のプログラム追加
    • TitleManagerにもプログラムを追加
// Eが押されたら、Titleシーンに切り替え
		if (Input.GetKeyDown (KeyCode.E)) {
			SceneManager.LoadSceneAsync ("Title");
		}
// Eが押されたら、説明シーンに切り替え
		if (Input.GetKeyDown (KeyCode.E)) {
			SceneManager.LoadSceneAsync ("Description");
		}
  • Player2を追加
    • PlayerをコピーしてPlayer2を作成。
    • Player2の子にアセットのパンプキンを追加
    • Player2をW・A・S・Dで移動するようにした。
    • Player2が画面外に出ないようにした。(Playerだとマウスの位置を取得しているので、new Vector3だけに変えて値を制限した)
if (Input.GetKey(KeyCode.W)){
  transform.position += new Vector3 (0f, MAX_SPEED * Time.deltaTime, 0f);
}

if (Input.GetKey(KeyCode.A)){
  transform.position += new Vector3 (-(MAX_SPEED * Time.deltaTime), 0f, 0f);
}

if (Input.GetKey(KeyCode.S)){
  transform.position += new Vector3 (0f, -(MAX_SPEED * Time.deltaTime), 0f);
}

if (Input.GetKey(KeyCode.D)){
  transform.position += new Vector3 (MAX_SPEED * Time.deltaTime, 0f, 0f);
}
		transform.position =(new Vector3 (
			Mathf.Clamp(transform.position.x, MoveBounds.min.x, MoveBounds.max.x),
			Mathf.Clamp(transform.position.y, MoveBounds.min.y, MoveBounds.max.y),
			transform.position.z)
		);
  • アイテムをもう一つ追加(同じ色で分かりにくいですが、音符の形が違います。)

    • BallをコピーしてBall2を作成(BallとBall2の子にそれぞれ違うPrefabを追加)
    • BallSpawnerもコピーし、Ball2Spawnerを作成。Prefabを変えた。
  • 難易度の設定

    • タイトル画面で1・2・3キーを押すことで選択できるようにした。(1で簡単、2で普通、3で難しい)
      そしてCanvasにText追加
      • Game1、Game2のシーンを新しく追加し、Gameから中身をコピーし、Spawnerで敵とボールの数と速さを調節。
		// 1が押されたら、Game1シーンに切り替え
		if (Input.GetKeyDown (KeyCode.Alpha1)||Input.GetKeyDown (KeyCode.Keypad1)) {
			SceneManager.LoadSceneAsync ("Game1");
		}

		// 2が押されたら、Gameシーンに切り替え
		if (Input.GetKeyDown (KeyCode.Alpha2)||Input.GetKeyDown (KeyCode.Keypad2)) {
			SceneManager.LoadSceneAsync ("Game");
		}

		// 3が押されたら、Game2シーンに切り替え
		if (Input.GetKeyDown (KeyCode.Alpha3)||Input.GetKeyDown (KeyCode.Keypad3)) {
			SceneManager.LoadSceneAsync ("Game2");
		}

悩んだ所とやりたかったこと

悩んだ所
  • Player2が画面から出ないようすること   Playerはマウスの位置を取得していて、プログラムをそのまま使うことはできなかったので、色々なサイトを調べてがそのサイト古かったりしてエラーがでたりしたので、かなり考えて試行錯誤してやっと出来た。
     
やりたかったこと
  • アイテムを追加したときに、取得した時のScoreを変えること。試しに、MoveBallをコピーしてMoveBall2を作成してみたが、Ballcountのプログラムがどこでどう動いているか理解できずに、片方だけ全部取ったらClearと出てしまい諦めました。
  • タイトル画面でTextの"キーを押してスタート!"を点滅させたかった。

結局、自分の能力不足で全然意図したものが出来なかった。
そして、メモすることがとても大切だとわかりました。

確認できているバグ

  • タイトルでキーを同時に押すと、押された順にシーンがすぐに切り替わってしまうこと。(解決方法が分からなかった)  

WebGlでビルドしたときのフォント

水曜日の講義が終わり家に帰ってから、WebGlでビルド出来るかを確かめたときに起きたことです。
WebGlでのビルドは成功して、フォルダが表示されました。
そして、試しに"index.html"を開いて動作を確認した所、日本語が表示されていない事件が起こりました。
調べてみたところ、Unityの標準設定のフォント(Arialフォント)には日本語が含まれていないとのことでした。
解決方法は、日本語が含まれているフォントに変えることです。

なので、google noto より"Noto Sans CJK JP"をダウンロードし、Unityに実装して、すべてのフォントを変えて解決ではなく、"Arial"と"Noto Sans CJK JP"では、少し文字の大きさが違ったので調整して解決しました。

この現象はPCビルドでは起きなかった。

参考サイト
UnityのWebGLで日本語を表示する - Qiita

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages