簡體   English   中英

GameObject 不會在向剛體添加力時跳躍

[英]GameObject doesn't jump on adding force to rigidbody

我試圖讓角色在增加力量時跳躍

public class DemonController : MonoBehaviour
{
 [SerializeField]
 private float speed;
 [SerializeField]
 private Rigidbody2D rb;
 [SerializeField]
 private Animator anim;
 [SerializeField]
 private float jumpForce;
 [SerializeField]
 private SpriteRenderer sr;

 private Vector2 movement;

 // Update is called once per frame
 void Update()
 {
    movement.x = Input.GetAxisRaw("Horizontal");
 }

 void FixedUpdate() {
    Move();
    Jump();
    Attack();
 }

 void Move()
 {
   if (movement.x > 0) {
       sr.flipX = false;
   } else if (movement.x < 0) {
       sr.flipX = true;
   }
   anim.SetBool("running", movement.x != 0);
   rb.MovePosition(rb.position + movement * speed * Time.fixedDeltaTime); 
}

void Jump()
{
    if (Input.GetKeyDown("space")) {
        Debug.Log("space pressed");
        rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    }
}

void Attack()
{
    if (Input.GetKeyDown(KeyCode.J)) {
        anim.SetTrigger("attack");
    }
}
}

這是一個非常有趣的案例,因為我可以移動和攻擊,但我不能跳躍。 跳轉的條件是正確的,因為記錄了“按下空格”。 我也嘗試添加 Y 速度,但它也不起作用。 有人知道解決這個問題嗎?

字符檢查器1字符檢查器2

我想我想通了。 此行會導致問題:

rb.MovePosition(rb.position + movement * speed * Time.fixedDeltaTime); 

根據文檔,MovePosition 函數通過給它一個速度來移動對象的位置,使其在一幀中到達所需的位置。 這會干擾跳躍產生的力量,有效地壓倒你跳躍的力量。 不應在同一幀中同時使用 AddForce 和 MovePosition。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM