有没有办法用触摸输入按钮在 Unity 中保持跳远?
Is there a way to hold to long jump in Unity with a touchInput button?
我正在制作游戏,我想要跳跃的感觉就像在超级马里奥兄弟中跳跃一样。我能够使用键盘或控制器获得我想要的结果,因为它们具有 KeyDown、Key(按下时) , 和 KeyUp。但是 touchButtons 只有一个布尔值。 (按下或不按下)我有办法解决这个问题吗?
我尝试使用 Input.GetTouch 并使用开始和结束阶段,这给出了正确的结果,但我不确定如何将其实现到 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 触摸按钮着陆后立即跳跃。我通过键盘和游戏手柄按钮获得了想要的结果。
添加一个变量来记住上一帧按钮的状态。这样,只有在按下按钮的第一帧时,您才能进入跳跃启动块:
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;
}
我正在制作游戏,我想要跳跃的感觉就像在超级马里奥兄弟中跳跃一样。我能够使用键盘或控制器获得我想要的结果,因为它们具有 KeyDown、Key(按下时) , 和 KeyUp。但是 touchButtons 只有一个布尔值。 (按下或不按下)我有办法解决这个问题吗?
我尝试使用 Input.GetTouch 并使用开始和结束阶段,这给出了正确的结果,但我不确定如何将其实现到 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 触摸按钮着陆后立即跳跃。我通过键盘和游戏手柄按钮获得了想要的结果。
添加一个变量来记住上一帧按钮的状态。这样,只有在按下按钮的第一帧时,您才能进入跳跃启动块:
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;
}