[英]I'm having problems to implement jump properly in Unity 2D
我已经在 Unity 中为我的控制器编写了这段代码。 问题是 Y 轴上的跳跃与 X 和 Y 轴同时跳跃的高度不同。
// Update is called once per frame
void FixedUpdate()
{
Debug.Log(rigidbody.velocity);
float inputX = Input.GetAxis("Horizontal");
//Movement X
if(inputX != 0 && isGrounded)
{
animator.SetBool("isWalking", true);
rigidbody.velocity = new Vector2(inputX*speed, 0);
//Turn left & right
if(inputX > 0)
{
spriteRenderer.flipX = false;
} else if (inputX < 0)
{
spriteRenderer.flipX = true;
}
} else
{
animator.SetBool("isWalking", false);
}
//Jump
if(Input.GetAxis("Jump") > 0 && isGrounded)
{
rigidbody.AddForce(Vector2.up * jumpImpulse, ForceMode2D.Impulse);
}
}
如果我理解你的代码是正确的,你只会在你在地面时给 X 施加力,所以我建议删除 isgrounded 变量并将它用于跳跃,例如在你的更新方法中
if(isGround){
if(keypress == y){
addforce in Y
}
}
实际上我在统一中有点氧化,但我希望对逻辑有用
在跳跃物理方面,我自己很糟糕,但我发现这些链接也许会对你有所帮助。
https://answers.unity.com/questions/710765/2d-c-jump-script-addforce-1.html
我也想知道哪个跳跃更高。 你说过不移动和移动时跳跃时存在高度差异。 两者哪个跳得更高? 你真的确定一个比另一个跳得更高还是看起来像一个跳得更高? 如果可以的话,您可以通过对平台进行测试来进行测试。
抱歉,我无法提供更多帮助,只能推测可能导致问题的原因。 但是,我建议您在进行运动时将其乘以 Time.DeltaTime。 这使得移动时间基于而不是基于帧。 这将使运动感觉更流畅。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.