侧边栏壁纸

Unity冲刺机制:如何实现角色冲刺

2023年10月15日 382阅读 0评论 6点赞

整体代码如下:

[SerializeField] private float dashTime;
    [SerializeField] private float dashDuration;
    [SerializeField] private float dashSpeed;
    [SerializeField] private float dashCd;
    [SerializeField] private float dashCd2;
    void Update()
    dash();
    dashCd -= Time.deltaTime;
    dashTime -= Time.deltaTime;
    
    private void Dash()
    {
        if (UnityEngine.Input.GetKeyDown(KeyCode.LeftShift)&&dashCd<=0&&!isAttacking)
        {
            dashTime = dashDuration;
            ;dashCd = dashCd2;
        }
        if (dashTime > 0)
        {
            rb.velocity = new Vector2(facingdir * dashSpeed, 0);
        }
    }

代码解析

初步设置:
在开始之前,请确保你的角色上已经附加了一个刚体(在代码中被称为rb),因为我们将修改它的速度来创建冲刺效果。

冲刺变量:

[SerializeField] private float dashTime;
[SerializeField] private float dashDuration;//冲刺时间
[SerializeField] private float dashSpeed;//为冲刺速度赋予数值
[SerializeField] private float dashCd;
[SerializeField] private float dashCd2;//冲刺的冷却时间

在这里,我们定义了几个关键的序列化字段:

dashTime:当前的冲刺时间。
dashDuration:冲刺可以持续的总时间。
dashSpeed:冲刺的速度。
dashCd:冲刺的当前冷却时间。
dashCd2:冲刺的总冷却时间。

主要功能:

void Update()
{
    Dash();
    dashCd -= Time.deltaTime;
    dashTime -= Time.deltaTime;
}

在Update函数中,我们持续减少冲刺的冷却时间和冲刺时间。
Time.deltaTime是一个根据时间持续增加的float变量,dashCd -= Time.deltaTime;等同于dashCd = dashCd-Time.deltaTime;这样做可以给dashCd持续赋值,根据时间减小。在unity中可以为dashCd设置一个初始值,这样就可以获得一个拥有初始值且持续减小的变量。

private void Dash()
{
    if (UnityEngine.Input.GetKeyDown(KeyCode.LeftShift) && dashCd <= 0 && !isAttacking)
    {
        dashTime = dashDuration;
        dashCd = dashCd2;
    }

    if (dashTime > 0)
    {
        rb.velocity = new Vector2(facingdir * dashSpeed, 0);
    }
}

在Dash函数中,当玩家按下左Shift键并满足特定条件时(冷却时间已结束且角色不在攻击状态),角色将开始冲刺。冲刺时,角色的速度会增加,使其快速移动。

总结:
这是一个简单的冲刺机制实现。你可以根据需要进一步定制和完善这个机制,例如添加冲刺的动画或特效,以增强游戏的体验和视觉效果。

6
打赏

—— 评论区 ——

昵称
邮箱
网址
取消
人生倒计时
舔狗日记