在统一中,我试图制作一个有点像 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);
}
}
你应该直接设置速度,而不是使用
AddForce
让鸟拍打。 AddForce
会增加身体的速度,这意味着它会保持已有的动量。为了达到你想要的效果,你应该设置速度,这样无论它的原始速度如何,它都会获得相同的向上速度。你可以这样做:
private void BirdFlap()
{
rb.velocity = new Vector3(rb.velocity.x, flapPower, rb.velocity.z);
}