Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法通过触摸输入按钮来保持跳远的统一性?_C#_Unity3d_Game Engine - Fatal编程技术网

C# 有没有办法通过触摸输入按钮来保持跳远的统一性?

C# 有没有办法通过触摸输入按钮来保持跳远的统一性?,c#,unity3d,game-engine,C#,Unity3d,Game Engine,我正在做一个游戏,我想让跳跃感觉像在超级马里奥兄弟中跳跃一样。我能够通过键盘或控制器获得我想要的结果,因为它们有按键、按键(按下时)和按键。但是触摸按钮只有一个布尔值。(按下或不按下)有没有办法解决这个问题 我尝试使用Input.GetTouch并使用begin和end阶段,这给出了正确的结果,但我不确定如何在GUI按钮中实现它 我正在使用的代码有一个GUI按钮,其中有一个脚本,当按下按钮时,joybutton.pressed=true void PlayerJump() { bool

我正在做一个游戏,我想让跳跃感觉像在超级马里奥兄弟中跳跃一样。我能够通过键盘或控制器获得我想要的结果,因为它们有按键、按键(按下时)和按键。但是触摸按钮只有一个布尔值。(按下或不按下)有没有办法解决这个问题

我尝试使用Input.GetTouch并使用begin和end阶段,这给出了正确的结果,但我不确定如何在GUI按钮中实现它

我正在使用的代码有一个GUI按钮,其中有一个脚本,当按下按钮时,joybutton.pressed=true

void PlayerJump()
{
    bool canJump = charController.isGrounded;

    //Button Pressed start jumpDuration
    if (joybutton.Pressed && canJump)
    {
        isJumping = true;
        jumpDuration = jumpTime;
    }


    if (isJumping == true)
    {
        if (jumpDuration > 0)
        {
            vertical_Velocity = jump_Force;
            jumpDuration -= Time.deltaTime;
        }

    //timer runs out
        else
        {
           isJumping = false;
        }
    }

    //cancel jump if mid-air
    if (!joybutton.Pressed)
    {
        isJumping = false;
    }
}

当玩家用GUI触摸按钮落地时,我无法阻止他们跳跃。我通过键盘和gamepad按钮获得所需的结果。

添加一个变量以记住按钮最后一帧的状态。这样,只有在按下按钮的第一帧时,才能进入跳转开始块:

private bool wasJumpPressedLastFrame = false;

void PlayerJump()
{
    bool canJump = charController.isGrounded;

    //Button Pressed start jumpDuration
    if (joybutton.Pressed && canJump && !wasJumpPressedLastFrame )
    {
        isJumping = true;
        jumpDuration = jumpTime;
    }


    if (isJumping == true)
    {
        if (jumpDuration > 0)
        {
            vertical_Velocity = jump_Force;
            jumpDuration -= Time.deltaTime;
        }

    //timer runs out
        else
        {
           isJumping = false;
        }
    }

    //cancel jump if mid-air
    if (!joybutton.Pressed)
    {
        isJumping = false;
    }

    wasJumpPressedLastFrame = joyButton.Pressed;
}

添加一个变量以记住按钮最后一帧的状态。这样,只有在按下按钮的第一帧时,才能进入跳转开始块:

private bool wasJumpPressedLastFrame = false;

void PlayerJump()
{
    bool canJump = charController.isGrounded;

    //Button Pressed start jumpDuration
    if (joybutton.Pressed && canJump && !wasJumpPressedLastFrame )
    {
        isJumping = true;
        jumpDuration = jumpTime;
    }


    if (isJumping == true)
    {
        if (jumpDuration > 0)
        {
            vertical_Velocity = jump_Force;
            jumpDuration -= Time.deltaTime;
        }

    //timer runs out
        else
        {
           isJumping = false;
        }
    }

    //cancel jump if mid-air
    if (!joybutton.Pressed)
    {
        isJumping = false;
    }

    wasJumpPressedLastFrame = joyButton.Pressed;
}