Dash cooldown
红色部分的代码为相较于前一p增加或者修改的部分,这一p主要是讲如何给人物角色设置一个冲刺的冷却时间,使得人物角色在规定的时间内只能使用一次冲刺,并且在冲刺冷却时<0的时候才能继续使用冲刺,间具体代码如下:
dashCooldown是我们设置的冲刺冷却时间,在这里我设置为了0.3秒
dashCooldownTimer 被影藏了,因为它会一直减少
当我按下冲刺键之前,dashCooldownTimer就已经开始是0了,并且开始不断减少为负数,当我按下冲刺键的时候,dashCooldownTimer被直接设置为0.3,人物进行冲刺,在0.3减到负数之前,我们不能够使用下一次冲刺,除非它已经被减到了负数。
public class player : MonoBehaviour
{
private Rigidbody2D rb;
// rb目前处于未被初始化的状态,值为null,不能被调用,不指向任何对象。
private Animator anim;
[SerializeField] private float moveSpeed;
[SerializeField] private float jumpForce;
[Header("Dash info")]
[SerializeField] private float dashSpeed;
[SerializeField] private float dashDuration;
private float dashTime;
[SerializeField] private float dashCooldown;
private float dashCooldownTimer;
新增了冲刺冷却和冷却时间
private float xInput;
private int facingDirection = 1;
private bool facingRight = true;
[Header("Collision info")]
[SerializeField] private float groundCheckDistance;
[SerializeField] private LayerMask whatIsground;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponentInChildren<Animator>();
}
void Update()
{
Movement();
CheckInput();
CollisionCheck();
dashTime -= Time.deltaTime;
dashCooldownTimer -= Time.deltaTime;
FlipController();
AnimatorControllers();
}
private void CollisionCheck()
// 如果 groundCheckDistance 碰到地面就是true,没有碰到地面是 flase
{
isGrounded = Physics2D.Raycast(transform.position, Vector2.down, groundCheckDistance, whatIsground);
}
private void CheckInput()
{
xInput = Input.GetAxisRaw("Horizontal");
// 设置 x 的输入,获得移动的机会
if (Input.GetKeyDown(KeyCode.K))
// 如果输入 空格 就会进行跳跃
{
Jump();
}
if (Input.GetKeyDown(KeyCode.LeftShift))
{
DashAbility();
}
}
private void DashAbility()
{
if (dashCooldownTimer < 0)
{
dashCooldownTimer = dashCooldown;
dashTime = dashDuration;
}
}
下面部分的代码维持原样。