首页 > 解决方案 > 我的 Jump 运行不佳 C# Unity 2D 平台

问题描述

嗨,在了解了如何实现跳转后,我正在执行我的播放器控制器脚本,我最终得到了这些:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed;

    private Rigidbody2D rb;
    private Vector2 moveVelocity;
    private float jumpVelocity;

    void Start() {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update() {
        bool jump = Input.GetKeyDown(KeyCode.Space);
        if (jump) {
            jumpVelocity = 5;
        }
        else
            jumpVelocity = 0;
        Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"), jumpVelocity);
        moveVelocity = moveInput * speed;
    }
    
    void FixedUpdate() {
        rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);
    }
}

你有什么改进它的秘诀吗?

标签: c#unity3d2d-games

解决方案


您可以使用 AddForce 而不是 MovePosition 与 ForceMode2D.Impulse 属性。这将是一个更好的跳跃机制。

例子:

rigidbody2D.AddForce(new Vector2(0, jumpVelocity), ForceMode2D.Impulse);

推荐阅读