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

25.12.2006, 17:49

Tastatursteuerung

hallo comunity :)

also ich will ein kleines 3d-Autorennspiel programmieren.
Jetzt hab ich des problem, dass ich es einfach nicht schaff die steuerung hinzubekommen. ich hab schon bei galactica geschaut wies gemacht wurde, allerdings hab ich da nicht so ganz durchgeblickt. ich will des ganze mit der tribase-engine machen. des soll halt so sein, dass man den pfeil vorwärts drückt und der wagen nach vorn fährt und wenn ma den pfeil nach links drückt der wagen nach links fährt ... wär nett wenn ihr mir ein paar kleine anregungen / vorschläge machen könntet

thx schon mal

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

2

25.12.2006, 19:44

Ist dein Problem die Tastatureingaben abzufragen oder die Tastatureingaben zu verarbeiten (also das Auto entsprechend zu bewegen)?
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

3

25.12.2006, 19:53

die verarbeitung also dass des auto sich halt bewegt

Frede

Treue Seele

Beiträge: 259

Wohnort: Hameln

Beruf: Schüler

  • Private Nachricht senden

4

25.12.2006, 20:19

Ich glaube du meinst nicht einfache

C-/C++-Quelltext

1
2
if( LINKS==GEDRÜCKT)
     Auto.x-=100*VERGANGENE ZEIT;

sondern eher etwas wie Beschleunigung und Bremsen.
Benutz einmal die Forensuche, da wirst du sicherlich etwas finden.
Und sonst frag Phili. Er programmiert grade ein 3D-Autorennen.
Viellecith kannst du da etwas mitnehmen.

mfg Frede[/cpp]
Hier könnte ihre Werbung stehen.

5

25.12.2006, 20:21

jo bin durch des game vom phili auch auf die idee gekommen :) aber hab ja schon suche benutzt aber da gabs nichts ...

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

6

25.12.2006, 22:45

Also spontan zur beschleunigung würde ich grob schreiben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(UP==GEDRÜCKT) // Genauen Code müsste man halt nachschauen

{
if(speed < maxSpeed)
{
 speed += 10;
}

Auto.z += speed;;
}

if(DOWN==GEDRÜCKT)
{
if(speed > 0) // Wenn DOWN auch der Rückwärtsgang ist muss man diese if-Schleife weglassen 

{
speed -= 20;
}
Auto.z += speed * fTime;
}


So müsste es zumindest funktionieren.

7

26.12.2006, 20:43

also des mit dem speed is ja schon ma gut aber mein problem is halt auch , dass man ja glaub ich dafür die relativen koordinaten des autos braucht damit es sich immer in seine blickrichtung nach vorn bewegt des weiß ich halt auch net so richtig wie man des hinbekommt ...

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

8

26.12.2006, 22:50

Also ich würd mit einem Winkel arbeiten der die Ausrichtung des Autos ABSOLUT zur Z oder X-Achse angibt... Beim Lenken einfach den Winkel in, oder dekrementieren... Wenn du dann auch noch eine Lenkungsbeschleunigung machen willst, kannst du das so machen wie bei Speed, nur halt mit dem Winkel. Um dann die Ausrichtung des Autos zu bekommen holst du dir den DirectionNormalVektor:

C-/C++-Quelltext

1
vDirection = 3DVector(sin(fWinkel), 0.f, cos(fWinkel));


Dann kannst du ganz leicht die Geschwindigkeit nur als Skalar handhaben und später mit der Richtung multiplizieren um eine Vektoraddition auf der Position des Autos durchführen zu können:

C-/C++-Quelltext

1
2
3
4
//vPosition = position des Autos (Absolut)

//fSpeed = Skalar für die Geschwindigkeit (Wegen Beschleunigung siehe oben)


vPosition += fSpeed * vDirection;


Und fürs richtige Rendern einfach den Winkel fWinkel als Parameter für eine Y-Rotation angeben... FERTIG!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

9

26.12.2006, 23:10

also kann auch sein dass ich zu dumm dafür bin -.- aber ich versteh net soo ganz was du meinst @ black-panther ... bin noch anfänger .. tt naja also ich bin so weit, dass sich mein auto dreht wenn ich auf die seite drück aber nach vorn oder hinten bewegt es sich nicht ...

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

10

27.12.2006, 00:19

Er meint, dass du eine Winkelvariable erstellen sollst, die praktisch die Drehung des Autos auf der Karte angibt.
Und wenn der Spieler dann in die entsprechende ruichtung drückt, dann dreht sich das Auto um eine gewisse Anzahl an Grad.

Und dann übergibst du mit einer Matrix die Rotation des #Autos um die Y-Achse.
In TB:

C-/C++-Quelltext

1
tbMatrix mRotation(tbMatrixRotationY(fWinkel*fTime);

oder so ähnlich glaube ich.

Wenn du nun die Beschleunigung so berechnest musst du halt sinus und cosinus beherschen, ich kapier es selber noch nicht ganz ;)

Für die Bewegung:
Du berechnest so weit ich das vestehe sie Ausrichtung des Autos auf der Karte - Siehe Code von Black-Panther- und dann multiplizierst du diesen Wert, welcher ja ein Vector ist, mit der Speed Variable, damit sich das Auto auch korrekt bewegt.

Wahrscheinlich kapierst du es so genau so wenig.

Zeig doch einfach mal den Code

Werbeanzeige