Unity,显示带有GUI文本区域的圈数

时间:2015-05-20 14:44:29

标签: c# user-interface unity3d textarea

我对编程和为学校作业做一个简单的赛车游戏相对较新。我之前从未使用过Unity或C#,而且我遇到了一个问题,如果有人可以帮助我,我会非常感激。

所以我用GUI文本区显示时间和圈数,工作正常。但我也希望随着汽车到达我的检查站,圈数会增加,但是,它不起作用。当我在玩游戏时,它仍然会说" Laps:0"当我点击检查点时,在GUI文本区域,即使它应该说" Laps:1"。

我想也许我必须在void Update()中做一些事情,但我不知道是什么。我已经尝试了很多不同的东西,但到目前为止,没有任何作用。

public float timeLeft = 150f;
public int laps = 0;

void Update()
{
    timeLeft -= Time.deltaTime;
}

void OnGUI()
{
    GUI.TextArea (new Rect (10, 10, 150, 20), "Time left: " + timeLeft + "\nLaps: " + laps);
}

void OnTriggerEnter (Collider other)
{
    if (other.gameObject.tag == "Checkpoint")
    {
        laps = laps + 1;
    }
}

希望比我更了解情况的人能够帮助解决这个问题。

1 个答案:

答案 0 :(得分:2)

您需要检查是否确实发生了与触发器的碰撞。

只有在以下情况下才会发生触发和碰撞:

  • 至少有一个物体附有刚体
  • 两个对象 需要连接一个Collider;
  • 检查站对撞机需要有#34; isTrigger"检查是一个触发器并获得 OnTriggetEnter working
  • 如果两个对撞机都是凸面网格对撞机,它们就可以 检查碰撞(和性能)时遇到问题

Unity Doc:

  

此消息被发送到触发器对撞机和刚体(或者   碰撞器,如果没有刚体)触及触发器。笔记:   仅当其中一个碰撞器也有一个时,才会发送触发事件   刚体附着...