Jump to content
Unity Insider Forum

Racing Game Rampen ruckeln?


Blattfressi

Recommended Posts

Hallo!
Ich mache gerade ein Spiel, bei dem man ein kleines Auto durch die Gegend fährt und über Rampen etc. springen kann. Es ist eine Art Übungsprojekt, ich bin noch nicht so lange dabei.( =

Jetzt habe ich folgendes Problem: nachdem ich meinen CarController und meinen CameraController geschrieben und hinzugefügt habe ruckelt der Bildschirm und das Auto so komisch, sobald man auf die Rampen fährt. Außerdem dreht sich das Auto nicht (Also es sieht aus, als würde es eine Treppe hochsteigen, nicht, als würden die Reifen auf dem Rampenboden fahren). Ich habe ein bisschen herumprobiert und bin darauf gekommen, dass eine bestimmte Zeile den Fehler verursacht, wenn ich sie weglasse, kann ich ganz normal auf den Rampen fahren. Allerdings ist die Zeile wichtig, sonst kann ich nicht steuern... Ich füge den Code hier mal ein und markiere die entsprechende Zeile, vielleicht kann mir jemand sagen, woran das liegt oder sogar eine bessere Alternative nennen.
Vielen Dank schon mal( =

 

CameraController(Hier ist das Problem):

public class CameraController : MonoBehaviour
{
    public float RotationSpeed = 1;
    public Transform Target, Player;
    float mouseX, mouseY;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    void LateUpdate()
    {
        CamControll();
    }

  
    void CamControll()
    {
        mouseX += Input.GetAxis("Mouse X") * RotationSpeed;
        mouseY -= Input.GetAxis("Mouse Y") * RotationSpeed;
        mouseY = Mathf.Clamp(mouseY, -35, 60);

        transform.LookAt(Target);

        Target.rotation = Quaternion.Euler(mouseY, mouseX, 0);
        
        Player.rotation = Quaternion.Euler(0, mouseX, 0);
        //die Zeile oben drüber macht Probleme...

        
    }
}

 

CarController:

public class CarController : MonoBehaviour
{
    public float speed;

    void Update()
    {
        Vector3 movementVector = new Vector3(0, 0, Input.GetAxis("Vertical"));

        transform.Translate(movementVector * Time.deltaTime * speed);
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß jetzt leider nicht was Target und Player unterscheidet, aber die Camera dreht und bewegt man ja nicht umsonst in der LateUpdate.
Sie soll nämlich nach allen anderen Dingen bewegt werden um ein Zittern zu vermeiden.
Du machst aber direkt nach dem LookAt eine Drehung des Targets, was ja wiederum ungut ist, denn jetzt ist die Camera nicht mehr als Letztes dran.
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Äh... das ist irgendwie Doppeltgemoppelt...

Also:
Camera hängt am Target. Target hängt am Player.  So:         Camera ----Target ----Player

Wenn du den Player drehst, dreht sich automatisch das Target mit. Hat es den selben Ursprung, dreht es sich genauso. Liegt es etwas nemen dem Ursprung, dann dreht es sich quasi um den Player herum. Egal wie. Es dreht sich mit. Da die Camera ein Child vom Target ist, dreht sie sich natürlich auch mit.

Gleichzeitig drehts du das Target selbst auch um die Y Achse. Target dreht sich also doppelt so weit, wie der Player. Camera dreht sich wieder mit.

Ja und dann zielst du mit der Camera auf das Target, also den AchsenNullpunkt. Was eigentlich nur einmalig notig ist, denn die Kamera hängt ja am Target dran und verändert somit die Ausrichtung im Bezug zum Target nicht einfach so.

Ich kann die Logik hinter dem Konstrukt nicht erkennen.  Wieso drehst du Target auch um die Y-Achse, wo doch das Drehen des Players reichen sollte?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...