[英]Can I use RigidBody.Addforce without drifting?
我正在嘗試使用剛體創建飛行模擬器。 我正在使用 AddForce 使飛機加速。 但是,當旋轉飛機時,會有很大的漂移。 我怎樣才能阻止這個?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlaneController : MonoBehaviour
{
public float maxSpeed = 200f;
public float speed = 90.0f;
public Vector3 rotationSpeedY = new Vector3(0, 0, 40);
public Vector3 rotationSpeedZ = new Vector3(40, 0, 0);
public Rigidbody rb;
private void FixedUpdate()
{
rb.AddRelativeTorque(-Input.GetAxis("Horizontal") * rotationSpeedY * Time.deltaTime);
rb.AddRelativeTorque(Input.GetAxis("Vertical") * rotationSpeedZ * Time.deltaTime);
rb.AddRelativeForce(transform.forward * speed);
speed -= transform.forward.y * Time.deltaTime * 50.0f;
if (rb.velocity.magnitude > maxSpeed)
{
rb.velocity = rb.velocity.normalized * maxSpeed;
}
if (speed < 35.0f)
{
speed = 35.0f;
}
}
}
這樣做的原因是您沒有以任何方式對空氣動力學進行建模。 當一架真正的飛機傾斜時,機翼會根據它們的迎角與行進方向提供升力,同時它們會產生相反方向的阻力。
如果您希望您的飛機像現實世界一樣做出反應,則必須計算這兩個力,如果您不是在尋找基於機翼形狀的精確空氣動力學模型,這將非常簡單。 目前你的飛機表現得好像沒有大氣層一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.