c# - Unity,使用 GUI 文本区域显示圈数

标签 c# user-interface unity-game-engine textarea

我对编程和为学校作业做一个简单的赛车游戏还比较陌生。我以前从未使用过 Unity 或 C#,并且遇到了一个问题,如果有人可以帮助我,我将不胜感激。

所以我用 GUI 文本区域显示时间和圈数,效果很好。但我也希望当汽车到达我的检查点时增加圈数,但是,它不起作用。当我玩游戏时,当我到达检查点时,GUI 文本区域中仍然显示“圈数:0”,尽管它应该显示“圈数: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;
    }
}

希望比我更有知识的人能够帮助解决这个问题。

最佳答案

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

触发器和冲突仅在以下情况下发生:

  • 至少有一个对象附加有刚体
  • 两个对象 需要附加一个碰撞器;
  • 检查点碰撞器需要将“isTrigger”检查为触发器并获取 OnTrigget进入工作
  • 如果两个碰撞器都是凸网格碰撞器,则它们可以 在检查碰撞(和性能)时遇到问题

统一文档:

This message is sent to the trigger collider and the rigidbody (or the collider if there is no rigidbody) that touches the trigger. Notes: Trigger events are only sent if one of the colliders also has a rigidbody attached...

关于c# - Unity,使用 GUI 文本区域显示圈数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353023/

相关文章:

java - 将 ActionListener 插入到 Java 的 GUI 代码中

java - 将文件存储在服务器上,并在安装 Android 应用程序时自动下载它们

c# - 以编程方式滚动带有计时器的 ScrollViewer 变得不稳定

java - 这可以工作吗 - 由打包到一个 Mac 桌面应用程序中的 Java 后端提供的 Objective-C UI?

unity-game-engine - 我的脚本不存在?

c# - 统一运行时的粉红色纹理

c# - bin中的dll与vs2012中发布的dll有区别吗

C# 日期操作

c# - ReSharper 表示 Console.ReadLine() 返回空值

c# - 事件 numericupdown_BackColorChanged 不触发