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

(61评价)
价格: 2208.00元
坦克大战 发射子弹技能冷却问题
一个长征路上的士兵发起了问答2020-03-02
4
回复
250
浏览
  void Update()
    {
        //开火技能冷却
        if (fireTime > 0.5f)
        {
            FireBullet();
            fireTime = 0;
        }
        else
        {
            fireTime += Time.deltaTime;
        }
    }

fireTime=0;这句代码的位置问题

如果放入FireBullet()方法中,发射子弹冷却效果正常

可把fireTime放入上面所示的位置,子弹也能发射,但间隔时间会特别长,而且间隔不一样,这是为什么呢?

按理说上面FireBullet()方法执行完后,也是到fireTime=0;的语句啊

其它一切正常

 

 

所有回复
  • 老师_Trigger 2020-03-03

    同学你好,通常是这样的,但跟同学 FireBullet() 方法中的实现也有关系,同学可以给老师看一下方法的实现吗

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  •  private void FireBullet()
        {
            if (Input.GetKeyDown(KeyCode.K))
            {
                Instantiate(prefab_Bullet, transform.position, Quaternion.Euler(bulletAngle));
                fireTime = 0;
            }
        }
    

    这是能正常运行的代码(fireTime放入了方法内)

    很疑惑,fireTime

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 很疑惑,fireTime在方法内执行和在方法外执行

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • 老师_Trigger 2020-03-03

    如果同学把fireTime放在if条件内,那么只有在发射子弹的时候计时器才会归零,那么之后在0.5秒内就不能发射子弹了,如果放在if条件外,那么只要计时器从0加到0.5秒,那么它就会自动归零,不论是否攻击按下K键,那么这时候就会多等0.5S,可以再思考一下

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