Unity持续按键(持续按下)设置间隔时间,子弹连续发射间隔时间(萌新也能懂)

设置持续按键的间隔时间,解决手速问题(雾

       通常在按键操作的游戏中,特别是发射子弹,都会有几种情况出现,一种是按下按键就发射一次,一种是一直按下按键就持续发射。但是在不仅是Unity里,java的按键检测中也同样存在问题。当持续按键时Unity实例化子弹的间隔会非常的快,触发时间极端。
比如 Input.GetKey() 方法→我们想发射子弹,如果使用GetKeyDown的话就得每发射一次就按一次,频繁的操作带来的是极度的手酸和麻烦。但GetKey方法的话,检测的是持续按下持续触发。目前本萌新没有找到可以控制触发速率的内置方法,网上也没找到,当初实属头疼。
       后来通过设置间隔时间和按下弹起粗略的解决了问题,希望dalao们能指点一下,更好的优化方法。不过对于萌新来说,还是有很好的用途的。

	// 弹幕间隔时间
    public float currentTime = 0.1f;
    // 弹幕计时
    private float invokeTime;
    // start方法中赋初值
    void Start()
    {
        invokeTime = currentTime;
    }
    
    void Update()
    {
        // 弹幕射击操作
        if (Input.GetKey(KeyCode.Z))
        {
        	// 按键按下时进行计时
            invokeTime += Time.deltaTime;
            // 间隔时间大于自定义时间才执行
            if (invokeTime -currentTime> 0)
            {
            	// 进行实例化弹幕、子弹等操作
                //Instantiate(*****);
                // 实例化一次后计时归零
                invokeTime = 0;
            }
        }
        // 同时,按键弹起时也对计时器归位
        if (Input.GetKeyUp(KeyCode.Z))
        {
            invokeTime = currentTime;
        }
    }

       代码中给出了核心的算法思路,这样是保证了每次按下按键时,能立即触发弹幕生成。不会存在断断续续的情况,或者按下无反应而过段时间才生成的情况。很简单的思路,希望能够帮助萌新们在基础阶段解决问题。

  • 18
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值