【问题标题】:Unity, displaying laps with the GUI Text AreaUnity,使用 GUI 文本区域显示圈数
【发布时间】:2015-05-20 14:44:28
【问题描述】:

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

所以我用 GUI 文本区域显示时间和圈数,这工作正常。但是我也希望随着汽车到达我的检查站而增加圈数,但是它不起作用。当我玩游戏时,当我点击检查点时,它仍然在 GUI 文本区域中显示“Laps: 0”,即使它应该显示“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;
    }
}

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

【问题讨论】:

    标签: c# user-interface unity3d textarea


    【解决方案1】:

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

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

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

    统一文档:

    此消息被发送到触发对撞机和刚体(或 碰撞器(如果没有刚体)接触触发器。笔记: 仅当其中一个对撞机也具有 附加刚体...

    【讨论】:

    • 我很确定 collison 工作正常,因为我刚刚意识到当我到达检查点时确实发生了一些事情。我的 GUI 文本区域仍然显示“Laps: 0”,但在其下方,您可以看到另一个更微弱的文本显示“Laps: 1”,我真的不知道为什么。啊,这让我发疯了。
    • 您可以使用 Debug.Log 来查看“圈数”的行为吗?如果您从另一个值开始,屏幕上的“圈数”仍然为零?
    • 你在游戏中有这个脚本的多个实例吗?这可以解释“微弱”的版本,因为它会绘制两次。
    猜你喜欢
    • 1970-01-01
    • 2020-03-21
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    相关资源
    最近更新 更多