【发布时间】:2019-01-09 17:03:48
【问题描述】:
我正在尝试制作堆栈跳跃游戏的副本以供学习。我试图让我的玩家跳到固定高度,但使用下面的代码,它总是跳到不同的高度。如果我触摸很长时间,它会跳得很高,如果我立即触摸并释放释放,那么它会跳得很低。我希望我的球员在长触球或短触球时都能跳出恒定的高度。我刚刚开始学习团结。请帮忙!
这是我的代码 -
Touch touch;
if (Input.touchCount > 0)
{
touch = Input.GetTouch(0);
if ((touch.phase == TouchPhase.Began) && isGrounded)
{
//rb.velocity = Vector2.up * jumpForce;
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
isGrounded = false;
}
if (touch.phase == TouchPhase.Ended)
{
//rb.velocity = Vector2.down * jumpForce;
rb.AddForce(Vector2.down * jumpForce, ForceMode2D.Impulse);
isGrounded = true;
}
}
【问题讨论】:
-
这段代码是否在您的
Update()方法中?如果是,它会检查每一帧的触摸并完全按照你说的做。将您的GetTouch(0)签入Update()方法并将您的跳转逻辑移至协程。 -
@Eliasar 此代码在 FixedUpdate() 方法中。我从前两天刚开始学习团结。我不确定协程是什么。我会努力落实你的建议。谢谢你! :)
-
您在触摸结束时设置 isGrounded = true。您应该使用地板对撞机来执行此操作。因为当你活着的时候,你的手指在不接触地板的情况下就变成了真实的。这是个问题。
-
moje_mast_ram 是对的。您应该使用物理来确定角色何时使用地板对撞机和重力跌倒。如果您在跳跃的每一帧都需要额外的处理,您可以使用协程。
标签: unity3d