sprite 3d transparenz
sprite 3d transparenz
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 :/
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 :/
nicht verzagen nco2k fragen:
um die ausgewählte farbe auf allen sprites transparent zu machen, verwende einfach #PB_Any als SpriteID.
c ya,
nco2k

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
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
ja aber du erstellst ein sprite.. du machst ja sonst nichts anders als ich. bei mir gehts nich :/
hier mal mein code:
(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.
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)
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.
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
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
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
doch das ist ja das merkwürdige.. deins und das pb example gehen aber meins nicht.. ich poste mal den ganzen code.
(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
)
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 -----

Zuletzt geändert von diGGa am 11.01.2006 16:50, insgesamt 1-mal geändert.