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

24.03.2010, 17:07

problem mir bewegung

hallo,

ich habe folgenden code:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
glTranslatef(0.0f,0.0f,-13.0f);
glRotatef(20.0f,1.0f,0.0f,0.0f);//diese drei zeilen sind für die schrägung der welt un des objekts

glTranslatef(0.0f,0.0f,13.0f);


glTranslatef(0.0f,0.0f,-3.0f);


glBegin(GL_QUADS);
//zeichnung des objekts

glEnd();



glTranslatef(0.0f,0.0f,-13.0f);

glTranslatef(0.0f,0.0f,7.0f);
glRotatef(yspeed,0.0f,1.0f,0.0f);
glTranslatef(0.0f,0.0f,-7.0f);


glTranslatef(0.0f,0.0f,13.0f+bewegungz);



glBegin(GL_QUADS);
//zeichnung der welt

glEnd();


darin hab ich ein feststehendes objekt und eine bewegliche umwelt.
nun möchte ich das sie diese umwelt um die y-achse einige stellen vor dem objekt dreht dies ist mir auch gelungen aber ich möchte auch, das die umwelt sich die umwelt wenn sie gedreht wurde sich auch in die entsprechende richtung bewegt. wenn ich jedoch die umwelt um 90 grad drehe bewegt sie sich seitlich.

was soll ich tun?

mfg

ernest7

Frischling

Beiträge: 20

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

24.03.2010, 20:26

Ich verstehe dein Ziel leider nicht wirklich.
was genau meinst du mit:

Zitat

sich die umwelt wenn sie gedreht wurde sich auch in die entsprechende richtung bewegt
?

Und was genau ist die Funktion deiner Variable "bewegungz"?

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

3

24.03.2010, 23:49

Bin ja prinzipiell immer gerne bereit Neueinsteigern zu helfen, aber um ehrlich zu sein vergeht einem da schnell die Lust und ich beantworte sie allein aus Protest schon nicht, wenn die Frage unleserlicher ist als hätte sie der Google-Translator gerade von Alt-Aztekisch nach Weißrussisch und von dort dann ins Deutsche übersetzt...

LG
Alyx

4

25.03.2010, 14:30

also bewegungz macht die bewegung also zb

if(keys[VK_LEFT])
{
bewegungz++;
}
und mein ziel ist das die umwelt sich immer nach hinten bewegt wenn ich bewegungz erhöhe und wenn ich bewegungz weniger mache soll sich dei welt nach vorne bewegen.

wenn ich die umwelt aber um 90 grad drehe bewegt sie sich seitlich.

mfg

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

5

25.03.2010, 14:35

Spontan würde ich jetzt sagen, dass du

C-/C++-Quelltext

1
glTranslatef(0.0f,0.0f,13.0f+bewegungz);

vor

C-/C++-Quelltext

1
glRotatef(yspeed,0.0f,1.0f,0.0f); 

ausführen solltest.

Aber bischen mehr Rechtschreibung wäre wünschenswert.
<< an dieser Stelle ist eine Signatur verstorben >>

6

25.03.2010, 14:45

also ich probier mal den wichtigsten teil zu erklären:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
glTranslatef(0.0f,0.0f,-13.0f);//bewegt die umwelt damit sie am anfang gut zu sehen ist


glTranslatef(0.0f,0.0f,7.0f);//sorgt dafür das der zeichner kurz vor dem objekt versetzt wird

glRotatef(yspeed,0.0f,1.0f,0.0f);//damit die umwelt um einen punkt vor dem objekt rotiert

glTranslatef(0.0f,0.0f,-7.0f);//macht das die welt wieder gut zu sehen ist also zeichner wieder zurücksetztzen



glTranslatef(0.0f,0.0f,13.0f+bewegungz);//bewegt die welt um bewegungz auf der z-achse(13.0f damit die welt gut zu sehen ist am anfang)


ich weis da wirklich nicht mehr weiter

ich habs höchstens noch geschaft das sich die welt um die bewegliche achse dreht aber das ist ja auch nicht das richtige

mfg

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

7

25.03.2010, 15:00

So weit ich es verstanden habe, ist dein Problem, dass die Bewegungsrichtung "mitrotiert".
Das ist aber auch kein Wunder, denn die Translation um bewegungz findet nach der Rotation statt.
Wie ich bereits gesagt habe, hast du Folgendes probiert?

C-/C++-Quelltext

1
2
3
4
5
6
glTranslatef(0.0f,0.0f,-13.0f);

glTranslatef(0.0f,0.0f,7.0f);
glTranslatef(0.0f,0.0f,13.0f+bewegungz);
glRotatef(yspeed,0.0f,1.0f,0.0f);
glTranslatef(0.0f,0.0f,-7.0f);
<< an dieser Stelle ist eine Signatur verstorben >>

8

25.03.2010, 15:17

ja schon die bewegungsrichtung rotiert mit aber wenn ich deinen code nehme hab ich das worauf ich schon früher gekommen bin. die wlt rotiert um einen punkt der sich immer mitbewegt.

dieser drehpunkt soll aber konstant sein

mfg

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

9

25.03.2010, 15:25

Dann hab ich dein Ziel immernoch nicht verstanden, was du erreichen willst.
Erklär ambesten mal ganz langsam.
<< an dieser Stelle ist eine Signatur verstorben >>

10

25.03.2010, 15:30

also das mit der achse die sich mitdreht kennst du ja jetzt.

nun wenn ich es so mache wie du, dreht sich die wlt perfekt um einen punkt aber er verändert die position wenn ich ihn bewege.

das heist wenn ich die wlt weit in den bildschirm laufen lasse so das sie gut zu sehen ist dreht sie sich sozusagen um sich selber jedoch soll sich sich um den punkt vor dem objekt drehen

wenn ich das so mache das sich die achse mitdreht dreht sich das objekt ja richtig nur es bewegt sich falsch.

wenn ich das so mache wie du geschrieben hast bewegt sich die welt richtig nur sie dreht sich falsch.

sry ist schwer zu erklären

mfg

Werbeanzeige