[英]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.