Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

01.06.2007, 16:29

carsteuerung problem(e)

ich bin gerade dabei eine simple fahrzeugsteuerung zu programmieren, dabei hab ich folgendes hauptproblem.

DOWNLOAD -> http://www.virtual-illusion.com/rocco/Drive_demo_alpha.zip

die steuerung verhält sich leider nicht akkurat, das problem dürfte sein, dass bei der vektorberechnung kommazahlen herauskommen, die dann gerundet werden.

hauptproblem ist bei langsamer fahrt, wenn der x-vektor zB 3,498734 ausmacht und der y-vektor 0,45943 dann bewegt sich das auto nur mehr auf der x achse aber nicht mehr auf der y achse da dort dann auf 0 aberundet wird.
damit stimmt das bild nicht mehr mit der richtung überein.

die steurerungscode ist simpelst:

vectorberechnung:

Quellcode

1
2
posX=Maths.Cos(Maths.DegreesToRadians(winkel))*tempo;
posY=Maths.Sin(Maths.DegreesToRadians(winkel))*tempo;


dann die tatsächliche umsetzung

Quellcode

1
2
vehicle.X = vehicle.X + FloatToInt(posX,eRoundNearest);
vehicle.Y = vehicle.Y + FloatToInt(posY,eRoundNearest);


kann mir da wer weiterhelfen, dieses problem zu umgehen?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

01.06.2007, 17:05

Erstmal eine Frage: wenn du doch weißt, dass das Runden das Problem ist, warum arbeitest du dann mit FloatToInt und warum nimmst du dann nicht einfach floats für Position, Steuerung usw.?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

01.06.2007, 17:23

na ich muss ja das bild im endeffekt auf eine fixe (int) pixel-position setzten (800x600), und damit brauch ich am ende der berechnung die endgültigen werte die halt dann leider gerundet werden müssen.

Powerpaule

Treue Seele

Beiträge: 162

Wohnort: Berlin

Beruf: Softwareentwickler

  • Private Nachricht senden

4

01.06.2007, 17:42

das ist ja richtig, aber die interne Position des Fahrzeugs kann doch trotzdem eine Dezimalzahl sein.
Das mit dem Runden des Wertes brauchst du doch nur zum Rendern.

5

01.06.2007, 17:50

ok hab grad was kapiert, danke. :)
bei meiner jetzigen methode, gehen die 0,xxx komplett verloren, aber wenn ich die positionen vorher in floats addiere wirkt es sich nicht mehr so dramatisch aus, das werde ich probieren.

6

03.06.2007, 12:35

mein nächstes problem ist das kollisionshandling.
es gibt dazu unzählige thread, aber ich steig leider aufgrund unzureichender mathekenntnisse nicht durch.
ausserdem kann das ganze ruhig so simpel wie möglich sein.

der einfachste ansatz (den ich kenne) ist der:
kollision auf der x achse =

Quellcode

1
vehicle.X = -vehicle.X * -1;


das problem dabei ist, das ich gerne einen derartigen code hätte, wo es egal ist ob die kollision in einer kurve einer horizontalen oder einer vertikalen barriere auftritt.

kann mir da wer weiterhelfen?
theoretische konzepte bitte sehr genau und mit praxisbezug (beispiel) erklären )

Werbeanzeige