Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2208.00元
见缝插针 项目中 如果快速点击鼠标会出现计数问题的BUG
Orz233发起了问答2018-03-19
10
回复
798
浏览

老师 当快速点击鼠标向计数器上插针,会出现计数不准确。 当2个要碰撞到一起时, 这个时候还是可以初始并且发射针头然后计数,我想在 update的鼠标监控流程里添加协程 暂停一秒 还是无效,请问该如果解决这个问题?

所有回复
  • siki 2018-03-20

    当2个要碰撞到一起时, 这个时候还是可以初始并且发射针头然后计数

    这句话描述的是什么意思,把问题描述清楚哦

    如果你想控制插针的时间间隔,可以定义一个计时器,只有计时器为0的时候,才可以监听鼠标按键插针

    • Orz233 2018-03-20

      就是说的点击鼠标速度的问题, 因为速度快就能在 第一根针还没到达目标圆 而后面还有2到3 根针也处于在飞行状态 ,就会变成 第一根针触发了游戏结束 后面还在飞的也被算到了 TEXT 文本计数器中

      (0) 回复
    • Orz233 2018-03-20

      对于您说的 计时器 不知道是不是C#或者 unity 里面的工具类 还是什么?

      (0) 回复
    • Orz233 2018-03-20

      我是这样写的:

      (0) 回复
    • Orz233 2018-03-20

      void Update()
      {
      if (isGameOver) return;
      timer -= Time.deltaTime;
      if (timer <= 0)
      {
      if (Input.GetMouseButtonDown(0))
      {
      pin.Fly();
      score++;
      scoreText.text = score.ToString();
      pin = SpawnPin();
      timer = 0.5f;
      }

      }

      }

      (0) 回复
    • Orz233 2018-03-20

      这个有效果 但是协程 为什么没有效果

      (0) 回复
    • Orz233 2018-03-20

      void Update()
      {
      if (isGameOver) return;

      if (Input.GetMouseButtonDown(0))
      {
      pin.Fly();
      StartCoroutine(GameSuspend());
      score++;
      scoreText.text = score.ToString();
      pin = SpawnPin();

      }

      }

      // 用协成进行停顿
      IEnumerator GameSuspend()
      {
      yield return new WaitForSeconds(1.0f);
      }

      (0) 回复
    还有1条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2018-03-21

    你可以这样,你设置一个boolean变量,表示是否小针正在飞行, 当按下鼠标的时候,把变量设置为true,当针达到球体的时候把变量设置为false,

    这样你判断只有当变量为false的时候,才可以发射小针

    • Orz233 2018-03-21

      恩恩 我其实只是想问协程不就是用来对当前线程做到挂起等待的作用么 ? 为什么我 在监控鼠标时调用协程暂停一秒没有任何效果

      (0) 回复
    • siki 2018-03-22

      回复 @ Orz233: 协程并不会对当前线程挂起,协程相当于增加了一个自己独立运行的线程,你挂起的是这个线程,对update没有任何影响

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!