我正在尝试统一制作像 flappy bird 这样的游戏,但我的 flap 仅在使用 ForceMode.Impulse 时有效

问题描述 投票:0回答:1

在统一中,我试图制作一个有点像 Flappy Bird 的游戏。当我尝试我的代码时,只有在力模式为

ForceMode.Impulse
时播放器才会拍打,所以重力影响了它并且它有一些奇怪的跳跃。我正在使用刚体为玩家增加力量。这是完整的代码:

using UnityEngine;
using UnityEngine.SceneManagement;

public class Flap : MonoBehaviour
{
    public KeyCode flapKey = KeyCode.Space;
    private Rigidbody rb;

    public float flapPower = 5f;

    private void Start()
    {
        rb = gameObject.GetComponent<Rigidbody>();
    }

    private void Update()
    {
        if(Input.GetKeyDown(flapKey))
        {
            BirdFlap();
        }
    }

    private void BirdFlap()
    {
        rb.AddForce(Vector3.up * flapPower, ForceMode.Impulse);
    }
}
c# unity3d
1个回答
1
投票

你应该直接设置速度,而不是使用

AddForce
让鸟拍打。
AddForce
会增加身体的速度,这意味着它会保持已有的动量。为了达到你想要的效果,你应该设置速度,这样无论它的原始速度如何,它都会获得相同的向上速度。你可以这样做:

private void BirdFlap()
{
    rb.velocity = new Vector3(rb.velocity.x, flapPower, rb.velocity.z);
}
© www.soinside.com 2019 - 2024. All rights reserved.