```using UnityEngine;

public class PaperAirplane : MonoBehaviour
{
    // Flugzeugparameter
    public float wingArea;
    public float crossSectionArea;
    public float mass;
    public float liftCoefficient;
    public float dragCoefficient;

    // Umgebungsparameter
    public float airDensity = 1.225f; // Luftdichte bei Meeresspiegel und 15 °C

    // Flugzeugbewegungen
    public float yawAngle;
    public float pitchAngle;
    public float rollAngle;

    private Rigidbody rb;

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

    private void FixedUpdate()
    {
        float velocity = rb.velocity.magnitude;

        // Berechnung der Kräfte
        Vector3 liftForce = CalculateLiftForce(velocity);
        Vector3 dragForce = CalculateDragForce(velocity);
        Vector3 gravityForce = CalculateGravityForce();

        // Anwendung der Kräfte auf das Flugzeug
        rb.AddForce(liftForce);
        rb.AddForce(dragForce);
        rb.AddForce(gravityForce);
    }

    private Vector3 CalculateLiftForce(float velocity)
    {
        float lift = 0.5f * airDensity * Mathf.Pow(velocity, 2) * wingArea * liftCoefficient;
        Vector3 liftDirection = Vector3.Cross(rb.velocity, transform.right).normalized;
        return liftDirection * lift;
    }

    private Vector3 CalculateDragForce(float velocity)
    {
        float drag = 0.5f * airDensity * Mathf.Pow(velocity, 2) * crossSectionArea * dragCoefficient;
        Vector3 dragDirection = -rb.velocity.normalized;
        return dragDirection * drag;
    }

    private Vector3 CalculateGravityForce()
    {
        return Vector3.down * mass * Physics.gravity.magnitude;
    }

    public void SetYaw(float yawInput)
    {
        yawAngle = yawInput;
    }

    public void SetPitch(float pitchInput)
    {
        pitchAngle = pitchInput;
    }

    public void SetRoll(float rollInput)
    {
        rollAngle = rollInput;
    }
}
```

Dieser Code erstellt eine Klasse PaperAirplane, die du auf deinem Papierflieger-GameObject als Skriptkomponente anbringen kannst. Füge einfach die benötigten Parameter wie Flügeloberfläche, Querschnittsfläche, Masse, Auftriebs- und Luftwiderstandsbeiwert hinzu.

In Unity musst du sicherstellen, dass dein Papierflieger-GameObject über eine Rigidbody-Komponente verfügt, um die Physiksimulation zu ermöglichen.

Beachte, dass dieser Code keine Steuerung für das Flugzeug enthält. Du musst zusätzlichen Code schreiben, um die Eingaben (z. B. Tastatur, Gamepad) zu verarbeiten und die Gier-, Nick- und Rollwinkel entsprechend anzupassen.
```ใช้ UnityEngine; PaperAirplane ระดับสาธารณะ: MonoBehaviour { // พารามิเตอร์เครื่องบิน สาธารณะลอย wingArea; สาธารณะลอย crossSectionArea; มวลลอยสาธารณะ ค่าสัมประสิทธิ์การลอยตัวสาธารณะ; ค่าสัมประสิทธิ์การลากลอยสาธารณะ; // พารามิเตอร์สภาพแวดล้อม airDensity ลอยสาธารณะ = 1.225f; // ความหนาแน่นของอากาศที่ระดับน้ำทะเล และ 15 °C // การเคลื่อนที่ของเครื่องบิน มุมเอียง ลอยสาธารณะ; pitchAngle ลอยสาธารณะ; rollAngle ลอยสาธารณะ; rb ร่างกายแข็งส่วนตัว; โมฆะส่วนตัวเริ่มต้น () { rb = GetComponent <Rigidbody> (); rb.mass = มวล; } } โมฆะส่วนตัว FixUpdate () { ความเร็วลอยตัว = rb.velocity.magnitude; // คำนวณแรง Vector3 liftForce = CalculateLiftForce(ความเร็ว); Vector3 DragForce = CalculateDragForce(ความเร็ว); Vector3 GravityForce = คำนวณ GravityForce(); // การใช้แรงกับเครื่องบิน rb.AddForce(liftForce); rb.AddForce(ลากฟอร์ซ); rb.AddForce(แรงโน้มถ่วง); } ส่วนตัว Vector3 CalculateLiftForce (ความเร็วลอยตัว) { float lift = 0.5f * airDensity * Mathf.Pow (ความเร็ว, 2) * wingArea * liftCoefficient; Vector3 liftDirection = Vector3.Cross(rb.velocity, change.right).normalized; กลับลิฟท์ทิศทาง * ยก; } Vector3 ส่วนตัว CalculateDragForce (ความเร็วลอย) { float Drag = 0.5f * airDensity * Mathf.Pow (ความเร็ว, 2) * crossSectionArea * DragCoefficient; Vector3 DragDirection = -rb.velocity.normalized; กลับลากทิศทาง * ลาก; } ส่วนตัว Vector3 CalculateGravityForce() { กลับ Vector3.down * มวล * Physics.gravity.magnitude; } โมฆะสาธารณะ SetYaw (ลอย yawInput) { yawAngle = yawInput; } โมฆะสาธารณะ SetPitch (float pitchInput) { pitchAngle = pitchInput; } โมฆะสาธารณะ SetRoll (float rollInput) { rollAngle = rollInput; } } ``` รหัสนี้สร้างคลาส PaperAirplane ที่คุณสามารถแนบไปกับ GameObject เครื่องบินกระดาษของคุณเป็นส่วนประกอบของสคริปต์ เพียงเพิ่มพารามิเตอร์ที่ต้องการ เช่น พื้นที่ผิวปีก พื้นที่หน้าตัด มวล สัมประสิทธิ์การยกและการลาก ใน Unity คุณต้องแน่ใจว่า GameObject เครื่องบินกระดาษของคุณมีส่วนประกอบที่แข็งแกร่งเพื่อให้สามารถจำลองฟิสิกส์ได้ โปรดทราบว่ารหัสนี้ไม่มีการควบคุมใดๆ สำหรับเครื่องบิน คุณจะต้องเขียนโค้ดเพิ่มเติมเพื่อประมวลผลอินพุต (เช่น แป้นพิมพ์ เกมแพด) และปรับมุมเอียง ระดับเสียง และมุมการหมุนตามลำดับ
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence