【问题标题】:How to Stop Timer when User Collides with an Object ? (Unity)当用户与对象碰撞时如何停止计时器? (统一)
【发布时间】:2018-07-03 16:14:38
【问题描述】:

我设置了一个计时器,它工作得很好,但是当用户与另一个物体发生碰撞时我不能让它停止。

Text text; float theTime;

public bool timer;
void Start()
{
     text = GetComponent<Text>();
}
void Update()
{
     if (timer == true)
     {
         theTime += Time.deltaTime;
         string seconds = (theTime % 60).ToString("0");
         text.text = seconds;
     }
}
}

当用户与任何物体发生碰撞时,我无法停止计时器。

我曾尝试在互联网上调用参考方法,但没有成功。

非常感谢您的帮助。

【问题讨论】:

  • 你试过什么方法?这是关于碰撞检测的问题,还是您的碰撞处理程序的问题?
  • 您可以使用其他选项来调试问题,而不是停止计时器。首先是开始一个新的时间,然后区分两个计时器。第二次尝试一个断点,看看定时器停止是否被击中。
  • 我找不到如何将计时器脚本引用到对撞机脚本。我知道我需要为敌人对象创建另一个脚本,但是我找不到连接这些不同脚本的方法。还是有其他方法:/?当敌人物体击中我的玩家时,我需要停止计时器。就是这样。

标签: c# unity3d


【解决方案1】:

不确定您卡在哪里,但在发生碰撞后,将timer 设置为false。这可以是OnCollisionEnter 或OnTriggerEnter 函数中的一个,具体取决于碰撞类型。如果您是 Unity 物理学新手,请参阅 this 教程。您需要观看 #1 和 #2 以了解对撞机。

如果您的碰撞类型不是触发器:

void OnCollisionEnter(Collision collision)
{
    timer = false;
}

如果使用触发器:

void OnTriggerEnter(Collider other)
{
    timer = false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多