【Unity脚本】游戏开发常用功能——双击键盘跑步/快步

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// Author:圈毛君
/// MoveController:2019/10/18 20:50
/// </summary>
public class PlayerController : MonoBehaviour
{
    public float walkSpeed = 3.0f;         // 步行速度
    public float runSpeed = 5.0f;          // 跑步速度
    public float pressInterval = 0.5f;     // 双击按键的有效时间间隔
    public float exStepDistance = 3.0f;    // 瞬步距离

    private Rigidbody2D rgb;
    private SpriteRenderer sr;
    private Color originColor;
    private float pressATime;              // 按下A键时间
    private float pressDTime;
    private float releaseATime = .0f;      // 松开A键时间
    private float releaseDTime = .0f;

    private void Awake()
    {
        rgb = this.GetComponent<Rigidbody2D>();
        sr = this.GetComponent<SpriteRenderer>();
        originColor = sr.color;
    }

    private void Start()
    {
        
    }

    private void Update()
    {
        MoveController();                           // 移动控制
    }

    public void MoveController()
    {
        if (Input.GetKeyUp(KeyCode.A))              // 不能||D,否则快速AD也算双击有效时间
        {
            releaseATime = Time.time;
            sr.color = originColor;
            rgb.velocity = new Vector2(0, 0);       // Stop
        }

        if (Input.GetKeyUp(KeyCode.D))
        {
            releaseDTime = Time.time;
            sr.color = originColor;
            rgb.velocity = new Vector2(0, 0);
        }

        if (Input.GetKey(KeyCode.A))
        {
            pressATime = Time.time;
            if(pressATime - releaseATime <= pressInterval)
            {
                rgb.velocity = new Vector2(-runSpeed, 0);       // 跑步
                sr.color = new Color(1, 0, 0);
                releaseATime = Time.time;                       // 跑步状态中要持续更新松键时间
            }
            else
                rgb.velocity = new Vector2(-walkSpeed, 0);      // 步行
        }

        if (Input.GetKey(KeyCode.D))
        {
            pressDTime = Time.time;
            if (pressDTime - releaseDTime <= pressInterval)
            {
                rgb.velocity = new Vector2(runSpeed, 0);
                sr.color = new Color(1, 0, 0);
                releaseDTime = Time.time;
            }
            else
                rgb.velocity = new Vector2(walkSpeed, 0);
        }
    }
}
发布了153 篇原创文章 · 获赞 184 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Ha1f_Awake/article/details/102631895
今日推荐