实现DNF式跑步按键——双击按住跑步

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour {
    public float ForwardPower = 30f;

    private float forwardTime = 0f;

    private bool isForwardSpeedUp = false;//跑
    private bool isForwardGo = false;//走
    private bool ForwardFirstClick = true;
    private bool isForwardOver;//主要用于结束循环的变量
    float[] ForwardTime = new float[2] { 0, 0 };


    void FixedUpdate() {

        forwardTime += Time.deltaTime;
        isForwardOver = false;
        if (!Input.GetKey(KeyCode.W)) {
            isForwardSpeedUp = false;
            isForwardGo = false;
            if (ForwardFirstClick) {
                ForwardTime[0] = 0f;
                ForwardTime[1] = 0f;
            }
        }
        if (Input.GetKeyDown(KeyCode.W)) {
            CameraControl.Instance.m_Speed = 100f;
            isForwardGo = true;
            while (!isForwardOver) {
                if (ForwardFirstClick) {
                    ForwardTime[0] = forwardTime;
                    ForwardFirstClick = false;
                    isForwardOver = true;
                }
                else {
                    ForwardTime[1] = forwardTime;
                }
                if (ForwardTime[1] - ForwardTime[0] < 0.5f && ForwardTime[1] - ForwardTime[0] > 0f) {
                    isForwardSpeedUp = true;
                    ForwardFirstClick = true;
                    isForwardOver = true;
                    print("SpeedUp");
                }
                else if (ForwardTime[1] - ForwardTime[0] >= 0.5f) {
                    ForwardFirstClick = true;
                }
            }
        }
        if (isForwardSpeedUp)
            this.transform.position += this.transform.forward * -ForwardPower * Time.deltaTime * 2;

        else if (isForwardGo)
            this.transform.position += this.transform.forward * -ForwardPower * Time.deltaTime;

    }
}

基本逻辑就是计算两次按下的时间差,主要的难点在于判断,还可以继续优化的,我这写得有点冗余了,仅供参考。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值