[英]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 速度,但它也不起作用。 有人知道解決這個問題嗎?
我想我想通了。 此行會導致問題:
rb.MovePosition(rb.position + movement * speed * Time.fixedDeltaTime);
根據文檔,MovePosition 函數通過給它一個速度來移動對象的位置,使其在一幀中到達所需的位置。 這會干擾跳躍產生的力量,有效地壓倒你跳躍的力量。 不應在同一幀中同時使用 AddForce 和 MovePosition。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.