簡體   English   中英

我可以在不漂移的情況下使用 RigidBody.Addforce 嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM