Seite 1 von 2
sprite 3d transparenz
Verfasst: 10.01.2006 22:25
von diGGa
hi
es gibt ja
displaytransparentsprite()
gibts das auch für sprite3d oder wie funktioniert das da?
einfach so:
TransparentSpriteColor(-1, 255, 0, 255)
LoadSprite(#imgPlayer, "player.png", #PB_Sprite_Texture)
CreateSprite3D(#imgPlayer, #imgPlayer)
DisplaySprite3D(#imgPlayer, tail.playertail(i)\x, tail.playertail(i)\y, 80)
gehts ja nich :/
Verfasst: 10.01.2006 23:53
von Batze
Ruf mal das PB-interne Beispiel zu Sprite3D auf.
Ich weiß nicht warum dein Code nicht geht.

Verfasst: 11.01.2006 02:14
von nco2k
nicht verzagen nco2k fragen:
Code: Alles auswählen
If InitSprite() And InitSprite3D() And OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "test") And OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0)
If CreateSprite(0, 128, 128, #PB_Sprite_Texture) And StartDrawing(SpriteOutput(0))
Box(0, 0, 128, 128, RGB(255, 0, 0))
Box(32, 32, 64, 64, RGB(0, 255, 0))
StopDrawing()
TransparentSpriteColor(0, 0, 255, 0)
CreateSprite3D(0, 0)
EndIf
While WaitWindowEvent() <> #PB_Event_CloseWindow
ClearScreen(32, 32, 192)
If IsSprite3D(0) And Start3D()
DisplaySprite3D(0, 200, 200)
Stop3D()
EndIf
FlipBuffers()
Wend
EndIf
um die ausgewählte farbe auf allen sprites transparent zu machen, verwende einfach #PB_Any als SpriteID.
c ya,
nco2k
Verfasst: 11.01.2006 11:12
von diGGa
ja aber du erstellst ein sprite.. du machst ja sonst nichts anders als ich. bei mir gehts nich :/
hier mal mein code:
Code: Alles auswählen
Procedure DrawPlayer()
DisplaySprite3D(#imgPlayer, spieler.player\x, spieler.player\y)
EndProcedure
Procedure DrawPlayerTail()
transparency.w = 100
faktor.w = #cfgPlayerTailLength/100
For i = 0 To #cfgPlayerTailLength
transparency = transparency - faktor
DisplaySprite3D(#imgPlayer, tail.playertail(i)\x, tail.playertail(i)\y, transparency)
Next
EndProcedure
LoadSprite(#imgPlayer, "player.png", #PB_Sprite_Texture)
TransparentSpriteColor(#imgPlayer, 255, 0, 255)
CreateSprite3D(#imgPlayer, #imgPlayer)
(jetzt halt rauskopiert nicht genauso)
und in der hauptschleife
Start3D()
DrawPlayerTail()
DrawPlayer()
Stop3D()
und dann bleibt noch die frage, warum funzt drawplayertail() nicht richtig? ich wollte eigentlich jedem stück ein wenig weniger transparenz geben so das der schweif quasi ausläuft... aber die haben alle die gleiche transparenz, jedenfalls wirkt es so.
Verfasst: 11.01.2006 15:12
von Batze
Hast du dir denn das Beispiel im PB-Examples Ordner angesehen?
Verfasst: 11.01.2006 16:03
von diGGa
hatte es bis eben vergessen, aber irgendwie ist der code da genauso wie bei mir aber trotzdem funktioniert es nicht... (im beispiel schon aber nicht in meinem code)
Verfasst: 11.01.2006 16:30
von nco2k
was spielt es für eine rolle ob ich das sprite erstelle oder lade?! beides geht genauso gut. ich habs in dem beispiel jetzt nur mal eben erstellt, dass du nicht ein bild suchen musst.
was für eine version von pb benutzt du??
edit: vielleicht hast du einfach den falschen rgb-wert eingegeben, öffne mal dein bild in einem grafikprogramm und finde den exakten wert.
c ya,
nco2k
Verfasst: 11.01.2006 16:38
von diGGa
ne is der korrekte wert.. ohne sprite3d also nur mit sprite befehlen geht es ja... das is ja das merkwürdige... ich benutz 3.92
Verfasst: 11.01.2006 16:40
von nco2k
hmm und mein beispiel ging bei dir auch nicht?!
c ya,
nco2k
Verfasst: 11.01.2006 16:44
von diGGa
doch das ist ja das merkwürdige.. deins und das pb example gehen aber meins nicht.. ich poste mal den ganzen code.
Code: Alles auswählen
; ###########################
;
; Projekt Titel: Mouse Avoider
; Autor: Jaap 'Thoniel.NET' Groeneveld
; Beginn: 10.1.06
; Idee: http://www.actionflash.com/mouseavoider2.php
;
; ###########################
;{/ ----- Initialisieren -----
InitSprite()
InitSprite3D()
InitMouse()
InitKeyboard()
UsePNGImageDecoder()
OpenWindow(#PB_Any, 10, 10, 640, 480, #PB_Window_ScreenCentered|#PB_Window_SystemMenu, "Mouse Avoider by Thoniel.NET /minigames")
OpenWindowedScreen(WindowID(),0,0,640,480, 1,0,0)
; OpenScreen(640,480,32,"Mouse Avoider")
;} ----- Initialisieren -----
;{/ ----- Variablen -----
; ----- Variablen Deklarieren -----
Global mx.f,my.f, Event
Global imgPlayer
; ----- Variablen Laden -----
#cfgPlayerTailLength = 4
Enumeration
#imgPlayer
EndEnumeration
;} ----- Variablen Ende -----
;{/ ----- Strukturen -----
Structure player
x.f
y.f
oldx.f
oldy.f
EndStructure
Global spieler.player\x, spieler.player\y
Structure playertail Extends player
remains.w
EndStructure
Dim tail.playertail(#cfgPlayerTailLength)
;} ----- Strukturen Ende -----
;{/ ----- Prozeduren -----
Procedure UpdateEngines()
FlipBuffers()
;maus
If GetFocus_() = WindowID()
If WindowMouseX()>0 And WindowMouseX()<640-1 And WindowMouseY()>0 And WindowMouseY()<480-1
ExamineMouse()
If captured = 0
ReleaseMouse(0)
captured = 1
MouseLocate(WindowMouseX(),WindowMouseY())
EndIf
Else
ReleaseMouse(1)
captured = 0
EndIf
Else
ReleaseMouse(1)
captured = 0
EndIf
; /maus
ExamineKeyboard()
ClearScreen(0,0,0)
Event = WindowEvent()
mx=WindowMouseX()
my=WindowMouseY()
EndProcedure
Procedure UpdatePlayerPosition()
spieler.player\oldx = spieler.player\x
spieler.player\oldy = spieler.player\y
spieler.player\x = mx
spieler.player\y = my
EndProcedure
Procedure UpdatePlayerTail()
Shared spieler.player\oldx, spieler.player\oldy
For i=0 To #cfgPlayerTailLength
tail.playertail(i)\oldx = tail.playertail(i)\x
tail.playertail(i)\oldy = tail.playertail(i)\y
Next
tail.playertail(0)\x = spieler.player\oldx
tail.playertail(0)\y = spieler.player\oldy
For i = 1 To #cfgPlayerTailLength
tail.playertail(i)\x = tail.playertail(i-1)\oldx
tail.playertail(i)\y = tail.playertail(i-1)\oldy
Next
EndProcedure
Procedure DrawPlayer()
DisplaySprite3D(#imgPlayer, spieler.player\x, spieler.player\y)
EndProcedure
Procedure DrawPlayerTail()
transparency.w = 100
faktor.w = #cfgPlayerTailLength/100
For i = 0 To #cfgPlayerTailLength
transparency = transparency - faktor
DisplaySprite3D(#imgPlayer, tail.playertail(i)\x, tail.playertail(i)\y, transparency)
Next
EndProcedure
;} ----- Prozeduren Ende -----
;{/ ----- Start Prozeduren -----
;} ----- Start Prozeduren Ende -----
;{/ ----- Mediendaten Laden -----
LoadSprite(#imgPlayer, "player.png", #PB_Sprite_Texture)
CreateSprite3D(#imgPlayer, #imgPlayer)
TransparentSpriteColor(#imgPlayer, 255, 0, 255)
;} ----- Mediendaten Laden Ende -----
;{/ ----- Hauptschleife -----
Repeat
UpdateEngines()
UpdatePlayerPosition()
UpdatePlayerTail()
Start3D()
DrawPlayerTail()
DrawPlayer()
Stop3D()
Until KeyboardPushed(#PB_Key_Escape) Or Event = #PB_Event_CloseWindow
End
;} ----- Hauptschleife Ende -----
;{/ ----- Datenfelder -----
;} ----- Datenfelder -----
(ich weiss das man eigentlich erst mit der engine anfängt und danach mit den effekten, aber ich hab das so nebenbei gemacht weil ich hier im forum noch auf antworten bzgl. leveln warte

)