我可以在两个没有附加到脚本的对象之间寻找碰撞检测吗?

时间:2016-02-20 11:22:24

标签: unity3d unity3d-2dtools

我目前在游戏中遇到一些碰撞检测问题。我有一个使用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 - 我想也许我可以在脚本中查找碰撞,但不需要将它附加到对象上,这可能会起作用吗? - 我不知道如何做到这一点

再次感谢您的时间。

1 个答案:

答案 0 :(得分:0)

所以首先,这是发布这个问题的错误地方!这是StackOverflow.com,但您的问题应该在StackOverflow GameDev。 既然我不能提出你的问题,我宁愿尝试回答它。或者至少猜一猜。您是否再次调用setScore函数?你不认为它应该是:

void OnCollisionEnter2D(Collision2D col){ if(col.gameObject.tag == "present") { gameScore++; setScore() //HERES THE CHANGE Destroy(col.gameObject); } }

我知道这是一个基本的答案,但有时你会忘记树木的木材......