Sprite drehen und "Schub" geben [gelöst]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
lassma-asma
Beiträge: 107
Registriert: 10.07.2007 09:14
Wohnort: Saarland

Sprite drehen und "Schub" geben [gelöst]

Beitrag von lassma-asma »

Hi Leute ,

ich hab im Moment das Problem , dass ich in meinem Programm ein Sprite habe(z.B. SChiff) , das ich mit Right und Left drehen kann / will und mit Up dann Gas gebe ...

so weit so gut ... das mit dem Drehen klappt schon ma so weit gut ... aber mit dem Schub geben funzt gar nich ...

muss irgendwas mit sin() und cos() vom drehwinkel zu tun haben ...
naja ... klappt halt irgendwie nich ... hier mal der code ...

Code: Alles auswählen

InitSprite()
InitMouse()
InitKeyboard()
InitSprite3D()


Global px.f : px = 500 ; X vom Player
Global py.f : py = 500 ; Y vom Player
Global pwin.l ; Winkel von Player

Enumeration
 #pu2d ; 2D-Player
 #back 
 #p ; 3d player
EndEnumeration

OpenScreen(1024,768,32,"Screen")

LoadSprite(#back,"back.bmp",#PB_Sprite_Texture)
LoadSprite(#pu2d,"pl_up.bmp",#PB_Sprite_Texture)
CreateSprite3D(#p,#pu2d)

Repeat
ClearScreen(0,0,0)
DisplaySprite(#back,0,0)
ExamineKeyboard()

Gosub steuerung

Start3D()
DisplaySprite3D(#p,px,py)
Sprite3DQuality(0)
Stop3D()

FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End

steuerung: ; Wo liegt hier der Fehler ?
If KeyboardPushed(#PB_Key_Left)
   pwin - 2
   RotateSprite3D(#p,pwin,0)
EndIf
If KeyboardPushed(#PB_Key_Right)
   pwin + 2
   RotateSprite3D(#p,pwin,0)
EndIf
If KeyboardPushed(#PB_Key_Up)
   px + Cos(pwin)
   py + Sin(pwin)
EndIf
Return
Und jetzt meine Frage ... WAS MACH ICH HIER FALSCH ? WO IST DER FEHLER MIT DEM SCHUB?

PS: SChon ma danke für alle ANtworten
Zuletzt geändert von lassma-asma am 04.10.2007 20:27, insgesamt 1-mal geändert.
Gruß lassma-asma

MultiPONG
HANGMAN


PB 3.94 und PureBasic 4.51 !!!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

'RotateSprite3D()' braucht den Winkel in Grad (0° bis 360°).
'Cos()' und 'Sin()' dagegen in Rad (0 bis 2*PI). Du musst also einfach nur
umrechnen.

Code: Alles auswählen

#deg2rad = 0.017453292519943296 ;= PI / 180
px + Cos(pwin * #deg2rad)
py + Sin(pwin * #deg2rad)
Benutzeravatar
lassma-asma
Beiträge: 107
Registriert: 10.07.2007 09:14
Wohnort: Saarland

Beitrag von lassma-asma »

aaaaahhh ...
na dann ...

werde es gleich ma probieren ... Danke schonma ...

gruß
Gruß lassma-asma

MultiPONG
HANGMAN


PB 3.94 und PureBasic 4.51 !!!
Benutzeravatar
lassma-asma
Beiträge: 107
Registriert: 10.07.2007 09:14
Wohnort: Saarland

Beitrag von lassma-asma »

hast du das eigentlich ausprobiert ... geht das bei dir ?

bei mir nich ...

ich weiß nich warum , probiers doch ma aus ... der macht nur ***

HILFE !
Gruß lassma-asma

MultiPONG
HANGMAN


PB 3.94 und PureBasic 4.51 !!!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

was geht denn nicht, ??

ist es nur ein 90° Fehler, dann musst du dein Bild drehen (in der datei)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
lassma-asma
Beiträge: 107
Registriert: 10.07.2007 09:14
Wohnort: Saarland

Beitrag von lassma-asma »

gott !!!
JAAA , danke Stargate ...

war schon auf der richtigen fährte .. :freak: :mrgreen: .

ja war echt so ... jetzt funzts ...

DANKE NOCHMAL :allright:
Gruß lassma-asma

MultiPONG
HANGMAN


PB 3.94 und PureBasic 4.51 !!!
Antworten