[英]Unity 2D Character Too Much Jumping
首先,抱歉我的英語不好。 我的問題很清楚;
我的角色有時跳得很高。
如果角色跳到對撞機角落,有時會發生這種情況; GIF; 正常跳高
為什么會這樣呢? 我該如何解決這個問題?
那是我的密碼;
private void FixedUpdate()
{
jumpButton = GameObject.Find("Jump").GetComponent<Button>();
jumpButton.onClick.AddListener(Jump);
groundCheck = GameObject.Find("GroundCheck").GetComponent<Transform>();
isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);
MoveInput = SimpleInput.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(MoveInput * speed, rb.velocity.y);
if (isGrounded && jump)
{
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
jump = false;
}
}
public void Jump()
{
jump = true;
}
通過這種方式,您每次跳躍時都可以加速向上運動。
為了使每次跳躍產生相同的速度,只需將y速度設置為某個值即可。 我們可以使用jumpForce/rb.mass
來獲得與使用ForceMode2D.Impulse
產生的AddForce
相同的值。
private void FixedUpdate()
{
jumpButton = GameObject.Find("Jump").GetComponent<Button>();
jumpButton.onClick.AddListener(Jump);
groundCheck = GameObject.Find("GroundCheck").GetComponent<Transform>();
isGrounded = Physics2D.OverlapCircle(groundCheck.position, checkRadius, whatIsGround);
MoveInput = SimpleInput.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(MoveInput * speed, rb.velocity.y);
if (isGrounded && jump)
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce/rb.mass);
jump = false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.