2D mit 3D Sprites - Tutorial

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Fetze

Betreff: 2D mit 3D Sprites - Tutorial

BeitragMi, Apr 07, 2004 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho

Also, ich suche ein Tutorial, das mit erklärt, wie ich aus 3D mithilfe von Sprites 2D mache.
Irgendwo hab ich mal so ein Tutorial gesehen, finde es aber nicht mehr. Wenn irgendjemand hier noch den Link hat, ich bitte darum Smile

Mr.Keks

BeitragMi, Apr 07, 2004 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
ich tippe mal, du meinst das von dc?

http://www.unrealsoftware.de/n..._bb_3dto2d
MrKeks.net

Xenon

BeitragMi, Apr 07, 2004 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.xenon.unrealsoftwar...amp;code=2

Mit dieser Lib, geht das ganze sehr leicht und man kann so ziemlich alles Einstellen!

Travis

BeitragSa, Apr 10, 2004 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau zu dieser Sache von DC hätte ich mal eine Frage. Es ist mir schon gelungen das in einer kleinen Tilemap mit transparentem Wasser anzuwenden, in der sich ein Fisch bewegen kann. Das ist aber nicht das Problem.

Auf dieser Grundlage wollte ich mal eine Partikelexplosion erzeugen. Jetzt gelingt es mir aber nicht die Partikel in die richtige Startposition zu bringen. Sie sind immer außerhalb des Bildschirmes. Die Explosion funktioniert schon prima, bloß beim ersten Positionieren muss wohl etwas schief gehen.

Ich kann den Fehler echt nicht finden.

zur Erklärung: w und h sind Breite und Höhe

Code: [AUSKLAPPEN]

Graphics3D 800,600,16,2
SetBuffer BackBuffer()

Camera = CreateCamera()
CameraRange Camera,1,800

Type Partikel
 Field x#,y#,speed#,winkel,rotate,alpha#,entity
End Type

For i = 1 To 1000
 CreatePartikel(400,300,2,2)
Next

Global FPSSEC = MilliSecs(), FPS, FRAMES

Timer1 = MilliSecs()
Repeat
Cls

UpdatePartikel()

RenderWorld()

; --- DEBUG INFO ONLY ---
Text 0,30, "FPS: " + FPS(1) + " FPS"
p.partikel = First partikel
Text 0,0, "X: " + p\x#
Text 0,10, "Y: " + p\y#
; ---

Flip
Until KeyHit(1)
End


Function CreatePartikel(x,y,w,h)
 p.partikel = New partikel
 p\x# = ((x*w)*2)-800+w ; Koordinaten von 2D > 2D (DCs Formel)
 p\y# = ((y*h)*2)+600-h
 p\speed# = Rnd(1,5)
 p\winkel = Rnd(0,359)
 p\alpha# = Rnd(0,1)
 p\entity = CreateSprite()
 ScaleSprite p\entity, w, h
 EntityAlpha p\entity, p\alpha#
 EntityColor p\entity, 255,Rnd(0,255),0
 PositionEntity p\entity, p\x#, p\y#, 800
End Function


Function UpdatePartikel()
 For p.partikel = Each partikel
  p\x# = p\x# + Cos(p\winkel) * p\speed#
  p\y# = p\y# + Sin(p\winkel) * p\speed#
  PositionEntity p\entity, p\x#, p\y#, 800
  p\rotate = p\rotate + p\speed*3
  If p\ rotate > 360 Then p\rotate = 0
  RotateSprite p\entity, p\rotate
 Next
End Function


Function FPS(MODE)
 If MODE = 1 Then
  FRAMES = FRAMES + 1
  If MilliSecs() - FPSSEC => 1000 Then
   FPS = FRAMES
   FRAMES = 0
   FPSSEC = MilliSecs()
  EndIf
 EndIf
 
 Return FPS
End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Travis

BeitragMi, Mai 19, 2004 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann denn wirklich keiner den Fehler sehen? Langsam könnte ich diese Explosion wirklich gut gebrauchen.
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

HOT-BIT

Gast

BeitragMi, Mai 19, 2004 12:49
Antworten mit Zitat
Hoi !

Habs mir gerade geladen, und wenn ich das so mache:
Code: [AUSKLAPPEN]
CreatePartikel(200,-150,2,2)


dann hab ich die Ausgangs-posi mitten am Schirm.
Also stimmt die Formel nicht !

Ich kenn mich aber bei 3D nicht aus !

Toni

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragMi, Mai 19, 2004 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Travis hat Folgendes geschrieben:

p\x# = ((x*w)*2)-800+w ; Koordinaten von 2D > 2D (DCs Formel)
p\y# = ((y*h)*2)+600-h


Welch Lüge Wink
Das ist NICHT meine Formel.
Nach meiner Formel sähe es so aus:
Code: [AUSKLAPPEN]
p\x# = (x*2)-800+w
p\y# = -(y*2)+600-h

(z müsste dann auf 800, also die X-Auflösung)
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

Travis

BeitragMi, Mai 19, 2004 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmpf! Da bin ich wohl irgendwie total durcheinander gekommen.

Danke für die Hilfe, so funktioniert's jetzt! Falls ich jetzt noch ein bisschen mehr Speed aus der Sache herauskitzeln kann, stelle ich's vielleicht mal ins Codearchiv.

EDIT: Nachtrag - Damit kann man echt coole Sachen machen:

Code: [AUSKLAPPEN]

Graphics3D 800,600,16,2
SetBuffer BackBuffer()

Camera = CreateCamera()
CameraRange Camera,1,800

Type Partikel
 Field x#,y#,speed#,winkel,rotate,alpha#,entity
End Type

For i = 1 To 1000
 CreatePartikel(400,300,1,20)
Next

Global FPSSEC = MilliSecs(), FPS, FRAMES

Timer1 = MilliSecs()
Repeat
Cls

UpdatePartikel()

RenderWorld()

; --- DEBUG INFO ONLY ---
Text 0,30, "FPS: " + FPS(1) + " FPS"
; ---

Flip
Until KeyHit(1)
End


Function CreatePartikel(x,y,w,h)
 p.partikel = New partikel
 p\x# = (x*2)-800+w ; Koordinaten von 2D > 3D (DCs Formel)
 p\y# = -(y*2)+600-h
 p\speed# = Rnd(10)
 p\winkel = Rnd(0,359)
 p\alpha# = Rnd(0,1)
 p\entity = CreateSprite()
 ScaleSprite p\entity, w, h
 EntityAlpha p\entity, p\alpha#
 EntityColor p\entity, 255,Rnd(0,255),0
 PositionEntity p\entity, p\x#, p\y#, 800
End Function


Function UpdatePartikel()
 For p.partikel = Each partikel
  p\x# = p\x# + Cos(p\winkel) * p\speed#
  p\y# = p\y# + Sin(p\winkel) * p\speed#
  PositionEntity p\entity, p\x#, p\y#, 800
  p\rotate = p\rotate + p\speed*3
  If p\ rotate > 360 Then p\rotate = 0
  RotateSprite p\entity, p\rotate
 Next
End Function


Function FPS(MODE)
 If MODE = 1 Then
  FRAMES = FRAMES + 1
  If MilliSecs() - FPSSEC => 1000 Then
   FPS = FRAMES
   FRAMES = 0
   FPSSEC = MilliSecs()
  EndIf
 EndIf
 
 Return FPS
End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group