Transparenz  
Autor/Einsender:
Datum:
  Peter Töws
10/2001
Anregungen/Tipps an:
Peter Töws
Transparenz ist mit das Wichtigste in einem 2D- und 3D-Spiel, denn in jedem gutem Spiel gibt es Figuren und Gegenstände wie z.B. Autos, die sich bewegen.
Was ist Transparenz 
Die Grafiken
Die Programmierung
Download
Bei Fragen zu diesem Tutorial nutzen Sie bitte unser VB-/VBA-Forum.

  Was ist Transparenz [ Top ]
Da Grafiken in der Regel immer rechteckig sind, sollen, wenn man nun eine Figur über einen Hintergrund bewegt, die Ecken dieser Grafik und die Teile, die z.B. nicht zu einer Figur gehören, auch nicht sichtbar sein. D.h. diese nicht benötigten Teile der Grafik müssen also transparent also unsichtbar sein. Um eine Transparenz zu erzeugen braucht man 2 Grafiken ein Original Bild und eine passende Maske.
  Original:
Maske:
Ergebnis:
 
In den beiden Bildern (Original und Maske) sieht man immer wieder den weißen Hintergrund der später als Transparenz angezeigt wird. In der Maske sieht man die schwarze Figur die angezeigt werden soll, d.h. alles was in der Maske schwarz ist, wird später zusehen sein.

  Die Grafiken [ Top ]
Um eine Spielfigur zu erstellen sollte man am besten erst mal Skizzen zeichnen. Nun wird mit dem Grafikprogramm die Figur gezeichnet. Zu empfehlen ist zum Zeichnen Paint oder PaintShop Pro und für besondere Effekte wie Lensflare oder Glitzereffekte PhotoImpact. Natürlich kann man auch professionellere Grafikprogramme bzw. Modelling-Programme wie Cinema4D oder 3D Studio MAX, die allerdings recht teuer sind, benutzen.
Benötigt wird natürlich ein Hintergrund, ein Objekt und die Maske. Die Maske ist das Objekt, und alles was beim Objekt nicht weiß ist, wird an über dem Hintergrund angezeigt.
 
 
Um ein solches Projekt zu realisieren, erstellen wir ein neues Projekt mit einer Form. Auf diese setzen Sie eine PictureBox mit ca. 640x480 Pixel. Stellen Sie bei den Eigenschaften:
 
Name: Display
AutoRedraw: True
 
Nun erstellen Sie noch eine PictureBox für den Hintergrund mit den Eigenschaften:
 
Name: BG
AutoRedraw: True
AutoSize: True
Picture: bg.bmp
Visible: False
 
Da das Bild auch nicht sichtbar sein soll, sind die o.g. Eigenschaften sehr wichtig. Die Bilder werden später in den Display kopiert, deshalb soll man sie nicht einfach sehen.
Nehmen Sie eine weitere PictureBox für den Skater mit den o.g. Eigenschaften.
Nach den Vorbereitungen und den Grafiken wird nun das Prinzip gebraucht. Damit der Skater durch das Bild fahren kann, zeichnet ein Timer immer wieder den Hintergrund neu und darauf "transparent" den Skater. Das verhindert ein Flackern.

Die Programmierung [ Top ]
Zuerst werden die notwendigen Variablen deklariert
 
Dim posX As Long ` Left des Bildes
Dim posY As Long ` Top des Bildes
 
Auf die Form wird jetzt ein Timer-Steuerelement mit dem Timer-Intervall 1 gesetzt. In die Timer-Prozedur kommt nun folgender Code:
 
Private Sub game_Timer()

  Display.PaintPicture bg.Picture, 0, 0

  Display.PaintPicture skaterm.Picture, posX, posY, , , , , , , _
     vbMergePaint
  Display.PaintPicture skater.Picture, posX, posY, , , , , , , _
     vbSrcAnd

End Sub
 
Mit der ersten Zeile wird der Hintergrund auf den Bildschirm kopiert. In der nächsten Zeile wird die Maske auf den Hintergrund aufgetragen. Dabei stehen die Variablen posX, posY für die Position der Figur. Danach werden Pixel der eigentliche Figur und der Maske mit Hilfe von And kombiniert. Dadurch entsteht die Transparenz.
Jetzt fehlt nur noch das manuelle Bewegen eines Objektes, d.h. das Bewegen des Skaters per Tastendruck.
 
Private Sub Display_KeyDown(KeyCode As Integer, Shift As Integer)

  If KeyCode = vbKeyRight Then
    posX = posX + 5
    If posX > Me.ScaleWidth - 5 Then posX = -35
  End If

  If KeyCode = vbKeyLeft Then
    posX = posX - 5
    If posX < 0 - 25 Then posX = Me.ScaleWidth - 15
  End If

End Sub
 
Mit den o.g. Codezeilen wird die Figur über das "Spielfeld" nach links und nach rechts bewegt, und wenn die Figur rechts oder links aus dem "Spielfeld" läuft, erscheint er auf der jeweils anderen Seite.
Viel Spaß mit dem Ausprobieren, und Testen. Den kompletten Beispiel-Code finden Sie in unserer Tipp-Rubrik.


Download  (12 kB) Downloads bisher: [ 8128 ]

Zum Seitenanfang

Startseite | VB/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | VB-/VBA-Forum | VB.Net-Forum | DirectX | DirectX-Forum | Foren-Archiv | VB.Net | Chat | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 21. Februar 2006