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);
}
}
}
【Unity脚本】游戏开发常用功能——双击键盘跑步/快步
猜你喜欢
转载自blog.csdn.net/Ha1f_Awake/article/details/102631895
今日推荐
周排行