2016-12-01 8 views
-2

私はUnityでピンボールゲームを作っています。問題があります。スコアにポイントを追加するためにピンボールがシリンダーに衝突すると、ピンボールは機能しません。 Unityのシリンダーにタグを付け、このスクリプトをピンボールに添付しました。デバッグログには表示されません。ユニティコリジョン検出 - コリジョンでGUIスコアを追加しますか?

ありがとうございました。

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 
using UnityEngine.SceneManagement; 

public class Score : MonoBehaviour { 
public int scorePoint = 10; 
public int MaxScore; 
public Text ScoreText; 


// Use this for initialization 
void Start() { 
    ScoreText = GetComponent<Text>(); 
    ScoreText.text = "Score: " + scorePoint; 
} 

void OnTriggerEnter (Collider other) 
{ 
    if (other.gameObject.tag == "Cylinder") 
    { 
     Debug.Log("Collision detected"); 
     scorePoint+=10; 

    } 
} 
// Update is called once per frame 
void Update() 
{ 

} 
} 
+1

あなたが問題を解決する正当な理由と手掛かりのためにUnity Answersで拒否された場合、ここでStackOverflowとまったく同じ質問をするのはかなり残念です。あなたの問題を解決するための**少し**の研究をすることができないことは、あなたを遠くにさせることはありません。 – Hellium

+0

** Tigger **と** Collision **は同じものではありません。OnCollisionEnter()を使ってみてください。 – Kardux

+0

@Hellium本当に魅力的です。私はメディアに警告します。 – Andrew

答えて

1

各オブジェクトにボックスコライダーが付いていることを確認してください。 OnTriggerEnterは、2つのボックスコライダーが互いに衝突したときにのみ呼び出されます。これは、なぜそれが動作しないが、私はそれを保証することはできませんより多くの情報なしで、最も可能性の高い犯人です。

+0

それで、私はコライダーのサイズを拡大し、それがトリガーしてデバッグログに現れました!しかし、スコアは依然としてゼロに止まっています。これを引き起こす論理エラーはありますか? – Andrew

+0

メモリ内のスコアが増加していますが、テキストを更新することはありません。 if文では、ScoreText.text = scorepoint –

+0

を設定します。また、10の代わりに0を指定すると、インスペクタで0に設定されている可能性があります。インスペクタで数値を編集しない場合は、変数をprivateにします。 –

関連する問題