我对编程和为学校作业做一个简单的赛车游戏还比较陌生。我以前从未使用过 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/