Problem mit Kugel-Realität
Übersicht

![]() |
ToeBBetreff: Problem mit Kugel-Realität |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600,16,2 AppTitle "KugelFall" Dim Rad(8) Kugel = LoadImage("GFX\Kugel.png") MaskImage Kugel ,255,0,255 MidHandle Kugel For x = 1 To 8 Rad(x) = LoadImage("GFX\Rad1.bmp") SetBuffer ImageBuffer(Rad(x)) MaskImage Rad(x),255,0,255 RotateImage Rad(x),x*45 MidHandle Rad(x) Next R1 = 1 SetBuffer BackBuffer() alt = MilliSecs() Repeat mx = MouseX() my = MouseY() y = y + 5 DrawImage Kugel,100,y If ImageRectCollide(Rad(R1),100,100,0,mx,my,1,1) Then If alt <= MilliSecs() - 500 R1 = R1 + 1 If R1 > 8 Then R1 = 1 alt = MilliSecs() EndIf EndIf DrawImage Rad(R1),100,100 If ImagesCollide(Kugel,100,y,0,Rad(R1),100,100,0) Then y = OY EndIf Flip Cls OY = y Until KeyHit(1) End Ich will das die Kugel, wenn man das Rad dreht,sich in der Mulde mitdreht. Wie geht das ? Ich hab's schon die ganze Zeit versucht mit ner X Koordinate, hab ich aber nich hin gekrigt. Könnt ihr mir helfen? Dankee im vooraus. mfg |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Rone |
![]() Antworten mit Zitat ![]() |
---|---|---|
moin,
weiß nicht ob ich dein Problem richtig verstanden habe, aber ich denke das wird dir weiterhelfen...ist leider ein bisschen viel weil die Bilder erstmal erstellt werden... Das wichtigste ist: DrawImage Ball, RadXpos+distance*Sin(rotation),RadYpos-distance*Cos(rotation) DrawImage img ,RadXpos , RadYpos ,rotation ...damit sich der Ball mit dem Rad mitdreht. Code: [AUSKLAPPEN] Graphics 640,480,16,2
;------------------------------ ;Rad erstellen Rad=CreateImage(64,64) SetBuffer ImageBuffer(Rad) Color 0,0,222 Oval 0,0,64,64 Color 0,0,0 Rect 20,0,24,12 Oval 20,0,24,24 ;Bild rotieren zeilen = 19 spalten =19 frames = zeilen *spalten img= Rotate(Rad,zeilen,spalten) MidHandle img ;------------------------------ ;Ball erstellen Ball=CreateImage(24,24) SetBuffer ImageBuffer(Ball) Color 0,255,0 Oval 0,0,24,24 MidHandle Ball ;------------------------------ ;Hauptprogramm SetBuffer BackBuffer() Color 255,0,0 RadXpos = 320 RadYpos = 240 distance = 22 While Not KeyHit(1)=1 Cls rotation = ( rotation + 362 ) Mod 360 ;distance = 52 + Sin(rotation*2)*32 DrawImage Ball, RadXpos+distance*Sin(rotation),RadYpos-distance*Cos(rotation) DrawImage img ,RadXpos , RadYpos ,rotation Flip Wend End ;------------------------------ Function Rotate(grund,zeilen,spalten,Datei$="temp.bmp") size = ( ImageWidth(grund)^2 +ImageHeight(grund)^2 )^0.5 HandleImage(grund,ImageWidth(grund)/2 ,ImageHeight(grund)/2) neu2=CreateImage(size*spalten,size*zeilen) TFormFilter 0 SetBuffer ImageBuffer(neu2) For ty=0 To zeilen-1 For tx=0 To spalten-1 bild=CopyImage(grund) RotateImage bild,Float(tx+spalten*ty)*(360.0/(spalten*zeilen)) DrawImage bild,size/2+tx*size,(size/2)+size*ty FreeImage bild Next Next SaveBuffer (ImageBuffer(neu2),Datei$) Return (LoadAnimImage(Datei$,size,size,0,spalten*zeilen)) End Function Function Angle(fX1#, fY1#, fX2#, fY2#) Return (ATan2(fY2 - fY1, fX2 - fX1) + 450.0) Mod 360.0 End Function |
||
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht gut aus^^
Aber ich glaub er will so n Murmelspiel nachbasteln ![]() |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich will so ein spiel machen wo man räder drehen muss, um die Kugel ins Ziel zu befördern.
~EDIT~ Neuer Code: [AUSKLAPPEN] Graphics 800,600,16,2 AppTitle "KugelFall" Dim Rad(7) Dim K(5) For i = 1 To 5 K(i) = LoadImage("GFX\Kugel.png") MaskImage K(i) ,255,0,255 MidHandle K(i) Next TFormFilter 0 For i = 0 To 7 Rad(i) = LoadImage("GFX\Rad1.bmp") SetBuffer ImageBuffer(Rad(i)) MaskImage Rad(i),255,0,255 RotateImage Rad(i), i*45 MidHandle Rad(i) Next Global R1 = 0 Global y Global x = 100 SetBuffer BackBuffer() alt = MilliSecs() Repeat mx = MouseX() my = MouseY() fy = fy + 1 y = y + fy If MouseDown(1) If ImageRectCollide(Rad(R1),100,100,0,mx,my,1,1) Then If alt <= MilliSecs() - 500 R1 = R1 + 1 If R1 > 7 Then R1 = 0 EndIf alt = MilliSecs() EndIf EndIf EndIf DrawImage K(1),x,y DrawImage Rad(R1),100,100 w# = ATan(R1) If ImagesCollide(K(1),x,y,0,Rad(R1),100,100,0) Then fy = 0 x = x+Sin(w#)*5 y = y+Cos(w#)*5 y = OY EndIf Flip Cls OY = y Until KeyHit(1) End immer wenn ich drehe dann fällt es raus...aber nicht richtig ! |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dafür solltest du dir glaub ich am besten eine kleine Physik-Engine schreiben, prinzip: Der Körper wird jeden Schleifendurchlauf, solange keine Kollision besteht nach unten bewegt, nun kann man dann Kräfte von 2 Achsen wirken lassen, die je nach trägheit des Gegenstandes oder von anderen Gegenständen verlangsamt/gestoppt werden. Ist zwar etwas komplex und bestimmt nicht wenig Code, aber wenn du das zu ner kleinen echten Physikengine ausbaust, dann kannst dus ja nicht nur dafür verwenden!
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics 800,600,16,2 AppTitle "KugelFall" Dim Rad(7) Dim K(5) For i = 1 To 5 K(i) = LoadImage("GFX\Kugel.png") MaskImage K(i) ,255,0,255 MidHandle K(i) Next TFormFilter 0 For i = 0 To 7 Rad(i) = LoadImage("GFX\Rad1.bmp") SetBuffer ImageBuffer(Rad(i)) MaskImage Rad(i),255,0,255 RotateImage Rad(i), i*45 MidHandle Rad(i) Next Global R1 = 0 Global y Global x = 100 Global RX = 100 Global RY = 100 Global fy# Global d = 22 SetBuffer BackBuffer() alt = MilliSecs() Global Fall = True Repeat mx = MouseX() my = MouseY() If Fall = True fy = fy + 0.5 y = y + fy EndIf If MouseHit(1) If ImageRectCollide(Rad(R1),RX,RY,0,mx,my,1,1) Then ;If alt <= MilliSecs() - 200 RO = True R1 = R1 + 1 If R1 > 7 Then R1 = 0 EndIf alt = MilliSecs() ;EndIf EndIf Else RO = False EndIf If RO = True Then r = (r + (R1*45)) Mod 360 EndIf If ImagesCollide(K(1),x,y,0,Rad(R1),RX,RY,0) Then y = OY x = OX fy = 0 DrawImage K(1),RX+d*Sin(r),RY-d*Cos(r) Else DrawImage K(1),x,y EndIf DrawImage Rad(R1),RX,RY Flip Cls OY = y OX = x Until KeyHit(1) End Also soweit funzt et ja, aber nur bei der ersten drehung. danach verliert es sich wieda... ~Edit~ oh... ![]() Code: [AUSKLAPPEN] Graphics 800,600,16,2 AppTitle "KugelFall" Dim Rad(7) Dim K(5) For i = 1 To 5 K(i) = LoadImage("GFX\Kugel.png") MaskImage K(i) ,255,0,255 MidHandle K(i) Next TFormFilter 0 For i = 0 To 7 Rad(i) = LoadImage("GFX\Rad1.bmp") SetBuffer ImageBuffer(Rad(i)) MaskImage Rad(i),255,0,255 RotateImage Rad(i), i*45 MidHandle Rad(i) Next Global R1 = 0 Global y Global x = 100 Global RX = 100 Global RY = 100 Global fy# Global d = 22 SetBuffer BackBuffer() alt = MilliSecs() Global Fall = True Repeat mx = MouseX() my = MouseY() If Fall = True fy = fy + 0.5 y = y + fy EndIf If MouseHit(1) If ImageRectCollide(Rad(R1),RX,RY,0,mx,my,1,1) Then ;If alt <= MilliSecs() - 200 RO = True R1 = R1 + 1 If R1 > 7 Then R1 = 0 EndIf alt = MilliSecs() ;EndIf EndIf Else RO = False EndIf If RO = True Then r = (r + (R1+42)) Mod 360 ; <<<<<<<<<<Hier EndIf If ImagesCollide(K(1),x,y,0,Rad(R1),RX,RY,0) Then y = OY x = OX fy = 0 DrawImage K(1),RX+d*Sin(r),RY-d*Cos(r) Else DrawImage K(1),x,y EndIf DrawImage Rad(R1),RX,RY Flip Cls OY = y OX = x Until KeyHit(1) End |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group