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

(66评价)
价格: 1299.00元
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

坦克大战 发射子弹技能冷却问题
一个长征路上的士兵发起了问答2020-03-02
4
回复
469
浏览
  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条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!