C# I';我在Unity 2D中无法正确实现跳转
我已经为Unity中的控制器编写了此代码。问题是Y轴的跳跃与X轴和Y轴同时跳跃的高度不同C# I';我在Unity 2D中无法正确实现跳转,c#,unity3d,C#,Unity3d,我已经为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)
// 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);
}
}
//每帧调用一次更新
void FixedUpdate()
{
Log(刚体速度);
float inputX=Input.GetAxis(“水平”);
//运动X
如果(inputX!=0&&isGrounded)
{
SetBool(“isWalking”,true);
刚体速度=新矢量2(输入x*速度,0);
//左转和右转
如果(输入x>0)
{
spriteRenderer.flipX=false;
}else if(inputX<0)
{
spriteRenderer.flipX=true;
}
}否则
{
动画师.SetBool(“isWalking”,false);
}
//跳跃
if(Input.GetAxis(“Jump”)>0&&isground)
{
刚体.AddForce(Vector2.up*跳跃脉冲,ForceMode2D.pulse);
}
}
如果我正确理解您的代码,您只在地面上对X施加力,因此我建议删除isground变量,并在更新方法中仅将其用于跳跃
if(isGround){
if(keypress == y){
addforce in Y
}
}
事实上,我在统一中有点被氧化了,但我希望对逻辑有用,我自己在跳跃物理方面也很差,但我发现这些链接可能会对你有所帮助 我还想知道哪一跳更高。你说过当你不移动跳跃时和移动时有高度差。两个人中哪一个跳得更高?你真的确定其中一个跳得比另一个高,还是看起来像一个跳得更高?如果可以,可以通过将平台放置为测试来测试这一点
很抱歉,我无法为我提供更多帮助,只能推测问题的原因。然而,我建议当你们做运动时,你们用时间乘以它。这使得移动基于时间而不是基于帧。这将使动作感觉更流畅。你在哪里定义跳跃冲动?