前提・実現したいこと
前提:Unityを触り始めて2週間ちょっとの初心者です。
Unityの2Dを使い、8個の穴に上からボールを3回落として点数を表示するゲームを製作途中です。
それぞれの穴に、ボールと衝突したときに起動する衝突判定用オブジェクトをIs trigger状態で設置し、ScoreGeneratorスクリプトをアタッチしました。
実現したいこと:それぞれの穴にボールが入ると決められた点数(1~8)が貰え、1回目、2回目、3回目にボールが落ちた穴に割り振られているそれぞれの点数と3回の合計点数をゲーム上に表示することです。
発生している問題
現在のScoreGeneratorスクリプトでは、1回目から3回目まで全て同じ穴に落ちた時はちゃんど動くのですが、同じ穴に2回連続でボールが落ちた後、3回目で違う穴にボールが落ちた際、3回目の処理をするのではなくまた1回目の処理がされてしまいます。 そこでどのようにすれば1~3回目の間で違う穴に落ちた時に全て同じ穴にボールが落ちた時と同じ処理がされるのか教えて頂きたいです。 またそれぞれの穴にボールが落ちた際、1~8の点数をソースコードの「〇」の部分に表示させたいのですがどうすれば実装できるのかわかりません。
該当のソースコード
C♯
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class ScoreGenerator : MonoBehaviour 7{ 8 float number = 1f;//衝突回数を判定する変数 9 public GameObject score_object1 = null;//1回目の点数を表示するTextオブジェクト 10 public GameObject score_object2 = null;//2回目の点数を表示するTextオブジェクト 11 public GameObject score_object3 = null;//3回目の点数を表示するTextオブジェクト 12 13 void OnTriggerEnter2D(Collider2D col) //このスクリプトをアタッチしている空のオブジェクトとボールとの衝突を検知するもの(ボールにはPlayerとタグ付け済み) 14 { 15 //衝突してきた物体がPlayerとタグ付けされているかつnumberが1(1回目の衝突)の時 16 if ((col.gameObject.tag == "Player") && (number == 1f)) 17 { 18 // オブジェクトからTextコンポーネントを取得 19 Text score_text1 = score_object1.GetComponent<Text>(); 20 // テキストの表示を入れ替える 21 score_text1.text = "1回目〇点"; // $〇の部分にそれぞれの衝突判定用オブジェクトに割り振った点数を表示させたいです$ 22 number++; //numberを1増やして2回目の衝突時の条件に移行させる 23 } 24 else if ((col.gameObject.tag == "Player") && (number == 2f))//24行目と同じ処理(2回目の衝突) 25 { 26 Text score_text2 = score_object2.GetComponent<Text>(); 27 score_text2.text = "2回目〇〇点"; // $〇〇の部分にそれぞれの衝突判定用オブジェクトに割り振った点数を表示させたいです$ 28 number++; //numberを1増やして3回目の衝突時の条件に移行させる 29 } 30 else if ((col.gameObject.tag == "Player") && (number == 3f)) //24行目と同じ処理(3回目の衝突) 31 { 32 Text score_text3 = score_object3.GetComponent<Text>(); 33 score_text3.text = "3回目〇〇点"; // $〇〇〇の部分にそれぞれの衝突判定用オブジェクトに割り振った点数を表示させたいです$ 34 } 35 //21,27,33行目のプログラム記述方法がわかりません。 36 } 37}
試したこと
他の方法は全く思いつきませんでした。
補足情報(FW/ツールのバージョンなど)
バージョン:2019.4.7.f1*
回答2件
あなたの回答
tips
プレビュー