我目前在游戏中遇到一些碰撞检测问题。我有一个使用instantiate()生成的预制件,这个对象有
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "present")
{
gameScore++;
Destroy(col.gameObject);
}
}
因此,当发生碰撞时,它会破坏对象并将分数加1。
我用它来设定分数:
public void setScore()
{
scoreText.text = "Score: " + gameScore.ToString();
}
我已经在不同的场景中对此进行了测试,它运行得很好。
当游戏进行游戏时,碰撞发生时,它会删除对象,但不会改变游戏中的可见分数。
我认为这是因为我无法分配公共文本变量
public Text scoreText;
预制。
因此,我试图将它附加到场景中的空对象,希望它能够正常工作。它没有。
我花了几个小时试图解决这个问题,它慢慢让我疯狂:) 非常感谢任何输入。 谢谢!
P.S - 我想也许我可以在脚本中查找碰撞,但不需要将它附加到对象上,这可能会起作用吗? - 我不知道如何做到这一点
再次感谢您的时间。
答案 0 :(得分:0)
所以首先,这是发布这个问题的错误地方!这是StackOverflow.com,但您的问题应该在StackOverflow GameDev。 既然我不能提出你的问题,我宁愿尝试回答它。或者至少猜一猜。您是否再次调用setScore函数?你不认为它应该是:
void OnCollisionEnter2D(Collision2D col){
if(col.gameObject.tag == "present")
{
gameScore++;
setScore() //HERES THE CHANGE
Destroy(col.gameObject);
}
}
我知道这是一个基本的答案,但有时你会忘记树木的木材......