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