質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%

Q&A

解決済

1回答

3778閲覧

【Unity】スコアが正しく表示されない

yuki_nity8

総合スコア7

0グッド

0クリップ

投稿2018/01/25 06:48

前提・実現したいこと

Unity2Dでアクションゲームを作っている、専門学校生です。
プレイヤーがアイテムを取得した際に、スコアを足していくことを実装したいんですが、正しく表示されません。ネット上で調べたうえで作成しているんですが、この部分がよくわかりません。

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class ItemScript : MonoBehaviour { 7 8 public Text scoreText; //Text用変数 9 private int score = 0; //スコア計算用変数 10 11 void Start(){ 12 scoreText.text = "Score: 0"; //初期スコアを代入して表示 13 } 14 15 //トリガーとの接触時に呼び出されるコールバック 16 void OnTriggerEnter2D(Collider2D col){ 17 string YourTag = col.gameObject.tag; 18 19 //アイテム(イワシ)との衝突 スコア+1 20 if (YourTag == "Iwashi"){ 21 score += 1; 22 scoreText.text = "Score: " + score.ToString(); 23 //このコンポーネントを持つGameObjectを破棄する 24 Destroy(gameObject); 25 26 //アイテム(マグロ)との衝突 スコア+3 27 }else if (YourTag == "Maguro"){ 28 score += 3; 29 scoreText.text = "Score: " + score.ToString(); 30 //このコンポーネントを持つGameObjectを破棄する 31 Destroy(gameObject); 32 33 //アイテム(シャチ)との衝突 スコア+5 34 }else if (YourTag == "Syachi"){ 35 score += 5; 36 scoreText.text = "Score: " + score.ToString(); 37 //このコンポーネントを持つGameObjectを破棄する 38 Destroy(gameObject); 39 40 //アイテム(クリスタル)との衝突 スコア+10 41 }else{ 42 score += 10; 43 scoreText.text = "Score: " + score.ToString(); 44 //このコンポーネントを持つGameObjectを破棄する 45 Destroy(gameObject); 46 } 47 } 48} 49

試したこと

ゲームを動かしてみると、プレイヤーが1個目のアイテム(マグロ)を取得するタイミングで、最後のelseの中身が実行される。そして、2個目以降のアイテムを取得しても、どのif文も実行されません。

補足情報(FW/ツールのバージョンなど)

追加で、アイテムを取得した際に効果音を流したい(上のスクリプトの中で実装したい)と思っています。この方法もできたら教えてほしいです。
Unityのバージョンは、「Unity 2017.2.0f3 Personal (64bit)」です。
ビルドした際のプラットホームは、「PC, Mac & Linux Standalone」です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これ、ぶつかったitemのgameObjectではなく、ItemScript自身のgameObjectをDestroyしちゃってるからではないですか?多分このItemScriptはずっと存在していなくてはいけなくて、あなたがDestroyしたいのはぶつかったマグロ等のアイテムのほうでは?
あと、マグロを取ったのに最後のelseが実行されるのは、本当にYourTagがMaguroかを確認したほうがよいです。打ち間違い等が考えられます。

投稿2018/01/25 06:56

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問