unity3d 有没有可能使力等于一个值而不是增加力

sczxawaw  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(141)

我的当前代码是:

public class scri : MonoBehaviour
{
    public float jumpforce = 3;
    Rigidbody rb;
    public int CanJump = 1;
    void Start()
    {
        rb = GetComponent<Rigidbody>();

    }

    void OnCollisionStay()
    {
        CanJump = 1;
    }

    void Update()
    {
    
        if (Input.GetKeyDown(KeyCode.Space) && CanJump > 0)
        {
            rb.AddForce(new Vector3(0.0f, 0.5f, 0.0f) * jumpforce, ForceMode.Impulse);  
            CanJump = CanJump - 1;           
        }

    
    } 
}

这就允许空中跳跃,就好像你在第一次跳跃后使用空中跳跃任何显著的时间,因为它只会增加力量,重力把它拉下来太多,第二次跳跃不会有太大的不同。
我试着查阅文档,但找不到任何有用的东西。

ldioqlga

ldioqlga1#

力就是力,它需要对抗重力,来平衡最终的速度。
你能做的就是直接覆盖最终的目标速度,简单地做。

var velocity = rb.velocity;
velocity.y = jumpVelocity;
rb.velocity = velocity;

相关问题