Transparens vom 3dSprite auf 120
-
super_castle
- Beiträge: 557
- Registriert: 29.11.2005 15:05
Transparens vom 3dSprite auf 120
Hallo, wenn ich ein 3dSprite mit dem Wert 120 durchsichtig machen möchte, kommt allmählich als Körperfarbe das Lila zum vorschein, welches ja dazu dient bestimmt Teile vom Sprite nicht anzuzeigen.
Ich möchte das das Sprite langsam verschwindet und nicht das der Untergrund des Sprites zum vorschein kommt.
DisplaySprite3D(0, 20,20,120)
Welchen Trick gibt es da ?
mfg
Ich möchte das das Sprite langsam verschwindet und nicht das der Untergrund des Sprites zum vorschein kommt.
DisplaySprite3D(0, 20,20,120)
Welchen Trick gibt es da ?
mfg
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
> kommt allmählich als Körperfarbe das Lila zum vorschein, welches ja dazu dient bestimmt Teile vom Sprite nicht anzuzeigen.
achja?
die default-transparenzfarbe ist schwarz, also wo ist das problem mit lila?
nein sorry, also mal ernsthaft.
würdest du bitte deine Fragen mit mehr Informationen versehen,
zum Beispiel Code posten der das Problem deutlich zeigt?
achja?
die default-transparenzfarbe ist schwarz, also wo ist das problem mit lila?
nein sorry, also mal ernsthaft.
würdest du bitte deine Fragen mit mehr Informationen versehen,
zum Beispiel Code posten der das Problem deutlich zeigt?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
super_castle
- Beiträge: 557
- Registriert: 29.11.2005 15:05
Vergiss lila, ich habe jetzt die Farbe schwarz genommen als Hintergrund für das Grabsprite.
DisplaySprite3D(0, 20,20,155), dabei kommt der Hintergrund (schwarz) allmählich zum Vorschein. Ich möchte das das Sprite durchsichtig wird und langsam verschwindet, je kleiner der Wert wird.
mfg
DisplaySprite3D(0, 20,20,155), dabei kommt der Hintergrund (schwarz) allmählich zum Vorschein. Ich möchte das das Sprite durchsichtig wird und langsam verschwindet, je kleiner der Wert wird.
mfg
Code: Alles auswählen
Global x1.f,y1.f,dx.f,dy.f,winkel.f,colli.l
Procedure sprite_grab()
DisplaySprite( 3,0,0)
Start3D()
RotateSprite3D(0,winkel,0)
DisplaySprite3D(0, 20,20,155)
Stop3D()
GrabSprite( 2, 0, 0, 104,104,0)
EndProcedure
InitSprite()
InitSprite3D()
OpenWindow(0,0,0,800,600,"sprites!",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),10,10,500,500,0,0,0)
CreateSprite(0,64,64,#PB_Sprite_Texture)
CreateSprite3D(0, 0)
StartDrawing(SpriteOutput(0))
Box(0,0,64,64,RGB(255,0,0))
StopDrawing()
CreateSprite(1,64,64,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(1))
Circle(32,32,30,RGB(0,0,255))
StopDrawing()
CreateSprite(3,104,104,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(3))
Box(0,0,104,104,RGB(0,0,0))
StopDrawing()
dx=100
dy=100
ClearScreen(RGB(255,255,0))
sprite_grab()
DisplaySprite( 2, dx,dy)
OpenConsole()
Repeat
Event.l = WindowEvent()
ClearScreen(RGB(255,255,0))
If GetAsyncKeyState_(#VK_Z)
winkel=winkel+1
ElseIf GetAsyncKeyState_(#VK_R)
winkel=winkel-1
EndIf
If GetAsyncKeyState_(#VK_T)
y1=Sin(winkel/180*#PI)*1
x1=Cos(winkel/180*#PI)*1
dx+x1
dy+y1
ElseIf GetAsyncKeyState_(#VK_G)
y1=Sin(winkel/180*#PI)*1
x1=Cos(winkel/180*#PI)*1
dx-x1
dy-y1
EndIf
sprite_grab()
DisplayTransparentSprite( 1, 200,200)
DisplayTransparentSprite( 2, dx,dy)
colli=SpritePixelCollision(2,dx,dy, 1,200,200)
If colli=1
PrintN(Str(colli))
Else
PrintN(Str(colli))
EndIf
FlipBuffers()
Until Event = #PB_Event_CloseWindow
End
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
super_castle
- Beiträge: 557
- Registriert: 29.11.2005 15:05
Habe jetzt eine Lösung gefunden.
Das fahrende Sprite 2 gesetzt, dann Clearscreen hierher verlegt, dann den Colliblock gesetzt und das 3dSprite 0 welches oben gedreht wird an die gleiche Stelle gesetzt, wie das fahrende Sprite 2 hinter dem Hintergrund.
Der Zeitaufwand ist nicht wesentlich grösser, weil das setzen eines 3dSprite zusätzlich, etliche hundertmal schneller geht als das normale Sprite. Klappt jetzt wunderbar.
mfg
Das fahrende Sprite 2 gesetzt, dann Clearscreen hierher verlegt, dann den Colliblock gesetzt und das 3dSprite 0 welches oben gedreht wird an die gleiche Stelle gesetzt, wie das fahrende Sprite 2 hinter dem Hintergrund.
Der Zeitaufwand ist nicht wesentlich grösser, weil das setzen eines 3dSprite zusätzlich, etliche hundertmal schneller geht als das normale Sprite. Klappt jetzt wunderbar.
mfg
Code: Alles auswählen
.......
.......
sprite_grab()
DisplayTransparentSprite( 2, dx,dy)
ClearScreen(RGB(255,255,0))
DisplayTransparentSprite( 1, 200,200)
Start3D()
DisplaySprite3D(0, dx+20,dy+20,55)
Stop3D()
colli=SpritePixelCollision(2,dx,dy, 1,200,200)
Zuletzt geändert von super_castle am 02.05.2009 21:08, insgesamt 1-mal geändert.
-
super_castle
- Beiträge: 557
- Registriert: 29.11.2005 15:05
-
super_castle
- Beiträge: 557
- Registriert: 29.11.2005 15:05
Jup, vielen dank für die Sprite-Hilfe.
Jetzt komme ich wieder ein Stück weiter.
Kann ich jetzt wunderbar ausbauen mit allen Tricks.
mfg
Hier das Trans-Beispiel mit dem Trans-Rechteck und dem Kreis als Hindernis :
Jetzt komme ich wieder ein Stück weiter.
Kann ich jetzt wunderbar ausbauen mit allen Tricks.
mfg
Hier das Trans-Beispiel mit dem Trans-Rechteck und dem Kreis als Hindernis :
Code: Alles auswählen
Global x1.f,y1.f,dx.f,dy.f,winkel.f,colli.l
Procedure sprite_grab()
DisplaySprite( 3,0,0)
Start3D()
RotateSprite3D(0,winkel,0)
DisplaySprite3D(0, 20,20,255)
Stop3D()
GrabSprite( 2, 0, 0, 104,104,0)
EndProcedure
InitSprite()
InitSprite3D()
OpenWindow(0,0,0,800,600,"sprites!",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),10,10,500,500,0,0,0)
CreateSprite(0,64,64,#PB_Sprite_Texture)
CreateSprite3D(0, 0)
StartDrawing(SpriteOutput(0))
Box(0,0,64,64,RGB(255,0,0))
StopDrawing()
CreateSprite(1,64,64,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(1))
Circle(32,32,30,RGB(0,0,255))
StopDrawing()
CreateSprite(3,104,104,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(3))
Box(0,0,104,104,RGB(0,0,0))
StopDrawing()
dx=100
dy=100
ClearScreen(RGB(255,255,0))
sprite_grab()
DisplaySprite( 2, dx,dy)
OpenConsole()
Repeat
Event.l = WindowEvent()
If GetAsyncKeyState_(#VK_Z)
winkel=winkel+1
sprite_grab()
ElseIf GetAsyncKeyState_(#VK_R)
winkel=winkel-1
sprite_grab()
EndIf
If GetAsyncKeyState_(#VK_T)
y1=Sin(winkel/180*#PI)*1
x1=Cos(winkel/180*#PI)*1
dx+x1
dy+y1
ElseIf GetAsyncKeyState_(#VK_G)
y1=Sin(winkel/180*#PI)*1
x1=Cos(winkel/180*#PI)*1
dx-x1
dy-y1
EndIf
DisplayTransparentSprite( 2, dx,dy)
ClearScreen(RGB(255,255,0))
DisplayTransparentSprite( 1, 200,200)
Start3D()
DisplaySprite3D(0, dx+20,dy+20,55)
Stop3D()
colli=SpritePixelCollision(2,dx,dy, 1,200,200)
If colli=1
PrintN(Str(colli))
Else
PrintN(Str(colli))
EndIf
FlipBuffers()
Until Event = #PB_Event_CloseWindow
End
-
super_castle
- Beiträge: 557
- Registriert: 29.11.2005 15:05