2016-12-01 327 views
-2

我在Unity制作一个弹球游戏,我有一个问题。当弹球碰撞到一个圆柱体以添加分数时,它不起作用。我已经在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

你知道吗,当你的问题在统一解决方案上被拒绝是为了一个合理的理由和线索来解决你的问题时,看到你在StackOverflow上询问完全相同的问题相当令人失望。无法做出一点**的研究来解决你的问题不会让你走得更远。 – Hellium

+0

另外** Tigger **和** Collision **不是一回事......尝试使用OnCollisionEnter()。 – Kardux

+0

@Hellium真正迷人的我会提醒媒体。 – Andrew

回答

1

请确保您有每个对象在一个盒子撞机。 OnTriggerEnter仅在两个箱子撞击器相互碰撞时被调用。这是为什么它不工作,但没有更多的信息,我不能保证它最有可能的罪魁祸首。

+0

所以我放大了对撞机的大小,它设法触发并显示在调试日志中!但是得分仍然停留在零。是否有逻辑错误导致此? – Andrew

+0

您正在增加内存中的分数,但您从不更新文本。在if语句中设置ScoreText.text = scorepoint –

+0

此外,如果它的0而不是10开始可能是因为你有它在检查器中设置为0。如果您不想在检查员中编辑号码,请将变量设为私有。 –