2D mit 3D Sprites - Tutorial
Übersicht

![]() |
FetzeBetreff: 2D mit 3D Sprites - Tutorial |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich tippe mal, du meinst das von dc?
http://www.unrealsoftware.de/n..._bb_3dto2d |
||
MrKeks.net |
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.xenon.unrealsoftwar...amp;code=2
Mit dieser Lib, geht das ganze sehr leicht und man kann so ziemlich alles Einstellen! |
||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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-BITGast |
![]() 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 |
||
![]() |
DCSieger des B2D Retro Wettbewerb / Aug 04 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group