RPG Drehengine

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Blaggi

Betreff: RPG Drehengine

BeitragMi, Jul 05, 2006 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Aaaaaalso, ich bau gerade ein ganz kleines Spielchen, indem man mit ner Figur in der Vogelperspektive.. rumrennt......

Ich hab durch die Suche eben den code zum drehen per Maus gefunden..
Wenn ich den jetzt drehe, entsteht um die gedrehte Figur ein schwarzer Rahmen... Ich poste gleich nen screen..

EDIT: Hier ist er:
user posted image

hier is der Code (aus Robs tut uebernommen):

Code: [AUSKLAPPEN]
Graphics 609,609,16,2
SetBuffer BackBuffer()
TFormFilter 0

Global ppx = 10*32 ;X-Position des Charackters
Global ppy = 7*32  ;Y-Position des Charackters
Global py = 7      ;Kollisions X-Position des Charackters
Global px = 10     ;Kollisions Y-Position des Charackters
Global scrolly     ;Die Variable für die ScrollY-Position
Global scrollx     ;Die Variable für die ScrollX-Position
Global player1_n$   ;Name von player 1
Global winkel#

Global char    = LoadImage("theChar.bmp")
Global Tileset = LoadAnimImage("theTile.bmp",32,32,0,152)

Dim theChar(360)

For winkel = 0 To 359
   theChar(winkel) = CopyImage(char)
   MidHandle theChar(winkel)
   RotateImage theChar(winkel),winkel
Next


Dim map(18,18)

Data 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,149
Data 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149

For y = 0 To 18
   For x = 0 To 18
      Read map(x,y)
   Next
Next

Repeat
   Cls
   
   For x = 0 To 18
      For y = 0 To 18
         DrawBlock tileset,x*32-scrollx,y*32-scrolly,map(x,y)
      Next
   Next
   
   winkel = (ATan2 (ppy-scrolly-MouseY(),ppx-scrollx-MouseX())+270) Mod 360

   ; Spieler malen
   MaskImage theChar(winkel), 255, 0, 255

   DrawImage theChar(winkel),ppx-scrollx+16,ppy-scrolly+16
   player1_n$ = "Flippeh"
   Text ppx-scrollx-(Len(player1_n$)/2)-5, ppy-scrolly+30, player1_n$

   Text 0,0,py
   Text 0,20,px
   
   If move = 1 Then
      If aa > 0
         ;scrolly = scrolly + 2
         ppy = ppy + 2
         xo = xo + 1
         If xo = 16 Then aa = 0:py = py + 1:xo = 0
      End If
   End If


   If move = 2 Then
      If aa > 0
         ;scrolly = scrolly - 2
         ppy = ppy - 2
         xo = xo + 1
         If xo = 16 Then aa = 0:py = py - 1:xo = 0
      End If
   End If

   If move = 3 Then
      If aa > 0
         ;scrollx = scrollx - 2
         ppx = ppx - 2
         xo = xo + 1
         If xo = 16 Then aa = 0:px = px - 1:xo = 0
      End If
   End If

   If move = 4 Then
      If aa > 0
         ;scrollx = scrollx + 2
         ppx = ppx + 2
         xo = xo + 1
         If xo = 16 Then aa = 0:px = px + 1:xo = 0
      End If
   End If


   If KeyDown(205) Then
      If map(px+1,py) < 5 Then
         If aa < 1 Then
            move = 4
            aa = 1
         End If
      End If
   End If


   If KeyDown(203) Then
      If map(px-1,py) < 5 Then
         If aa < 1 Then
            move = 3
            aa = 1
         End If
      End If
   End If


   If KeyDown(200) Then
      If map(px,py-1) < 5 Then
         If aa < 1 Then
            move = 2
            aa = 1
         End If
      End If
   End If


   If KeyDown(208) Then
      If map(px,py+1) < 5 Then 
         If aa < 1 Then
            move = 1
            aa = 1
         End If
      End If
   End If

   Flip
Until KeyHit(1)

FreeImage tileset
FreeImage char

End
=D
 

lettorTrepuS

BeitragMi, Jul 05, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Blaggi

BeitragMi, Jul 05, 2006 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
In meinem Code befindet sich schon ein MaskImage......

Mit dem filtere ich den RGB Wert 255, 0, 255 vom Bild raus....
Der schwarze Kasten wird von BB gemacht......
=D
 

konstantin

BeitragMi, Jul 05, 2006 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.

Du solltest das Bild in der Schleife maskieren, in der du es drehst.

Gruß, Konstantin

Blaggi

BeitragMi, Jul 05, 2006 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@Koni: Das habe ich bereit versucht, sowohl mit schwarz als auch mit pink als Maskfarbe
=D
 

konstantin

BeitragDo, Jul 06, 2006 9:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst das Bild vor dem Rotieren maskieren...

Bud

BeitragDo, Jul 06, 2006 9:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie sieht "theChar.bmp" genau aus? Könntest du es mal posten?
 

flohrian

BeitragDo, Jul 06, 2006 9:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Alt:
Code: [AUSKLAPPEN]
For winkel = 0 To 359
   theChar(winkel) = CopyImage(char)
   MidHandle theChar(winkel)
   RotateImage theChar(winkel),winkel
Next


Neu:
Code: [AUSKLAPPEN]
For winkel = 0 To 359
   theChar(winkel) = CopyImage(char)
   MidHandle theChar(winkel)
   MaskImage theChar (winkel), 255, 0, 255
   RotateImage theChar(winkel),winkel
Next


Versuch das mal, wie konni sagte.

5k41

BeitragDo, Jul 06, 2006 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Bitte, bitte benutz kein Array! Hast nur Probleme damit hab das schon 2 mal versucht, jedes mal gabs in verbindung mit ImagesCollide komische Probleme bei bestimmten gradzahlen. Benutz statt dessen eine erstellte animimage. wenn du nicht weisst wie, dann guck dir den Code von meinem Spaceshooter im Showcase an.

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group