MoveEntity mit negativen Werten
Übersicht

![]() |
ChrissaBetreff: MoveEntity mit negativen Werten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leute!
Ich versuche mich gerade an 3D. Ich habe eine Frage zum Befehl MoveEntity. Kann man da auch negative Werte einfügen? Wenn ja, warum geht der Code dann nich: BlitzBasic: [AUSKLAPPEN] Function Bewegen() und die Hauptschliefe: BlitzBasic: [AUSKLAPPEN] While Not KeyDown(1) Bis jetzt kann ich mich nur anch hinten oder links bewegen... Danke schon mal im Vorraus EDIT: Ich weiß, Bewegungen sollte man mit Winkelfunktionen machen, aber das is mir noch zu viel... EDIT 2: Habe es gelöst. Musste zweimal elsif rausnehemen... |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Edit2
Gut, aber mach es dir doch nicht so kompliziert ![]() Code: [AUSKLAPPEN] Function Bewegen()
x=0 z=0 If KeyDown(32) Then x=1 If KeyDown(30) Then x=-1 If KeyDown(17) Then z=1 If KeyDown(31) Then z=-1 End Function Außerdem solltest du für Bewegungen lieber mit Floats arbeiten anstatt mit Int. *edit* KeyDown bzw. Keyhit Kann nur einmal pro Schleifendurchlauf verwendet werden. Besser du speicherst alle Tastenabfragen in globale Variablen "KeyDown_W=KeyDown(...)" z.b. |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
NightPhoenix, biste dir mit Keydown sicher?
Bei mir geht das auch mehrmals. |
||
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein das ist nicht ganz richtig. Nur KeyHit()/MouseHit() können nur einmal abgefragt werden, aber KeyDown()/MouseDown() kann man so oft aufrufen wie man will. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Allerdings sind Konstrukte wie
BlitzBasic: [AUSKLAPPEN] If KeyDown(32) Then zu vermeiden, da der Status der Taste zwischen der ersten und zweiten Abfrage ändern kann. Also, wenn KeyDown(32) beim If noch false zurückgibt, kann es sein, dass, weil die Taste im passenden Moment gedrückt wurde, Not KeyDown(32) ebenfalls false zurückgibt. Ist jetzt in dem Fall nicht so schlimm, führt dann halt zu Unsynchronitäten (gibts das Wort?). Aber es gibt Fälle, wo wirklich nur die Fälle "Taste gedrückt oder andernfalls" auftreten dürfen. mfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Jo0oker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und wie NightPhoenix schon sagte, mach das wie folgt:
Code: [AUSKLAPPEN] ;Vor der Hauptschleife Dim myKeyDown(255) Dim myKeyHit(255) In der Hauptschleife dann: Code: [AUSKLAPPEN] For i = 1 to 255 myKeyDown(i) = KeyDown(i) myKeyHit(i) = KeyHit(i) next Und dann verwende nur noch myKeyDown und myKeyHit. So beseitigst du diverse Probleme im vorraus! lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
![]() |
M0rgenstern |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Jo0oker:
Oben wurde ja schon gesagt, dass key/mouseDOWN öfter aufgerufen wrden kann, und das kann ich nur bestätigen. Oder beziehst du dich zusätzlich auf Holzchopf? Dann würde das ganze nämlich wirklich Sinn machen, auf Down in einer Variable zu speichern. Lg, M0rgenstern |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es könnte so etwas passieren:
BlitzBasic: [AUSKLAPPEN] ;Taste x wird gedrückt Es macht also Sinn, die Werte zwischenzuspeichern. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group