Flugzeug hoch und runter fliegen lassen in c# (unity)?
Hi,
Ich arbeite momentan an einem 2D Spiel wo man ein Flugzeug steuert.
Ich habe jetzt einen Code geschrieben mit dem das Flugzeug vorwärts und rückwärts steuern kann.
Nun meine frage: Wie programmiere ich das mein Flugzeug hoch und runter fliegt (in C#)?
3 Antworten
Es gibt mehrere Methoden:
transform.Rotate(...)
- Nicht Physikbasiert
- Rotiert das Flugzeug
- Kann hoch/runter fliegen, wenn deine Vector3's richtig eingetragen sind
transform.Translate(...)
- Nicht Physikbasiert
- Rotiert das Flugzeug nicht
- Kann hoch/runter fliegen
rigidbody.AddTorque(...)
- Physikbasiert
- Rotiert das Flugzeug
- Kann hoch/runter fliegen, wenn dein Vector3 und ForceMode richtig eingetragen ist.
rigidbody.AddForce(..)
- Physikbasiert
- Rotiert das Flugzeug nicht
- Kann hoch/runter fliegen, wenn dein Vector3 und ForceMode richtig eingetragen ist.
Ich kann dir mit dem Code nicht helfen, da du ihn nicht reinkopiert hast. Es gibt natürlich weitere Methoden, jedoch sind dies die einfachsten und herkömmlichsten.
Hi, hier ist mein Code habe ihm beim fragen stellen vergessen reinzukopieren
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float maxSpeed = 4;
public float jumpForce = 550;
private Rigidbody2D rb2d;
private bool jump = false;
// Use this for initialization
void Start () {
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown ("Jump"))
jump = true;
}
void FixedUpdate()
{
float hor = Input.GetAxis ("Horizontal");
rb2d.velocity = new Vector2 (hor * maxSpeed, rb2d.velocity.y);
if(jump)
{
rb2d.AddForce (new Vector2(0,jumpForce));
jump = false;
}
}
}
Du rotierst das Flugzeug horizontal/vertikal
Ich kenne deinen bisherigen Code nicht. Ich würde es über Vektoren und Matrizen lösen, was Richtung und Neigungen angeht.
Hi, hier ist mein Code:
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float maxSpeed = 4;
public float jumpForce = 550;
private Rigidbody2D rb2d;
private bool jump = false;
// Use this for initialization
void Start () {
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown ("Jump"))
jump = true;
}
void FixedUpdate()
{
float hor = Input.GetAxis ("Horizontal");
rb2d.velocity = new Vector2 (hor * maxSpeed, rb2d.velocity.y);
if(jump)
{
rb2d.AddForce (new Vector2(0,jumpForce));
jump = false;
}
}
}
Wow, ist das nicht Overkill?