微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在 C# 中实现双跳功能,该功能限制在 Godot 游戏引擎中只能进行 2 次跳转

如何解决尝试在 C# 中实现双跳功能,该功能限制在 Godot 游戏引擎中只能进行 2 次跳转

我正在尝试使用 C# 在我的 Godot 游戏中实现双跳机制,我可以让他跳两次,但我不知道如何将跳数限制为仅 2 次。我尝试使用 jumpCount int 但无济于事。我一直无法找出实现这种机制的最佳方式我对 C# 还很陌生,我知道我的整个播放器脚本几乎都是 if 语句,但这是我能想到的让它工作的最佳方式。>

 using Godot;
 using System;

 public class player : KinematicBody2D
{
const int jumpForce = 125;
const float gravity = 200.0f;
const int moveSpeed = 80;
const float maxFallspeed = 200.0f;
const float acceleration = 10;
float jumpCount = 2;

public Vector2 veLocity = new Vector2(0,-1);

public override void _PhysicsProcess(float delta)
{
    var ap = GetNode("AnimationPlayer") as AnimationPlayer;
    var sprite = GetNode("playerTex") as Sprite;

    veLocity.y += delta * gravity;
    veLocity.x = Mathf.Clamp(veLocity.x,-moveSpeed,moveSpeed);



    if (veLocity.y > maxFallspeed)
    {
        veLocity.y = maxFallspeed;
    }

    if (Input.IsActionpressed("right"))
    {
        sprite.FlipH = false;
        veLocity.x += acceleration;
        ap.Play("run");
    }

    else if (Input.IsActionpressed("left"))
    {
        sprite.FlipH = true;
        veLocity.x -= acceleration;
        ap.Play("run");
    }

    else
    {
        veLocity.x = 0;
        ap.Play("idle");
    }

    if (Input.IsActionJustpressed("jump") && jumpCount < 2)
    {
        jumpCount += 1;
        veLocity.y = -jumpForce;
    }

    if (Input.IsActionpressed("jump") && IsOnFloor())
    {
        jumpCount = 0;
        veLocity.y = -jumpForce;
    }

    if (veLocity.y < 0 && !IsOnFloor())
    {
        ap.Play("fall");
    }

    if (veLocity.y > 0 && !IsOnFloor())
    {
        ap.Play("jump");
    }

    MoveAndSlide(veLocity,new Vector2(0,-1));
}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。