Sprite pixelgenau --> pickmode

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

shootermaker

Betreff: Sprite pixelgenau --> pickmode

BeitragMi, Feb 02, 2011 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Smile,
Wenn ich einen Sprite mit CameraPick "ertaste", dann funktioniert das nur in Form eines Würfel:

----
|0|
----

Aber wenn ich jetzt z.B. den Sprite mit einer Textur die ich "gemasked" habe und die dann so aussieht (also der Bereich oben rechts durchsichtig):

-----
|00|___
|00000|
----------

dann erkennt er das immer noch viereckig.

Ich dachte mir jetzt ich prüfe welch Farbe mein Sprite an der stelle hat wo ich meinen Treffer mit camerapick habe. wenn z.b. pink (die masked Farbe) dann soll der Pick durchgehen. Das hätte ich soweit in Code-Form umgesetzt.

Mein Problem ist aber wenn ich den Pick durchlasse (also den Spritepickmode auf 0) dann kann ich den nie weider auf 2 setzen, da ich den sprite nie weider treffe (da er ja auf 0 ist) Very Happy

Hoffe ihr könnt mir helfen. Smile

mfg shootermaker

Xeres

Moderator

BeitragMi, Feb 02, 2011 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Starte bei einem Treffer einen Timer und lass das Objekt zurücksetzen, wenn die Zeit abgelaufen ist.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Silver_Knee

BeitragMi, Feb 02, 2011 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Starte bei einem Treffer einen Timer und lass das Objekt zurücksetzen, wenn die Zeit abgelaufen ist.


führt zu "mal gehts mal nicht"

Ich denke du wirst wohl oder übel den Pick 2 mal ausführen müssen. Also erst Picken, Farbe testen und dann wenns durchgehen sollte Pickmode 0 nochmal Picken Pickmode 2 und dann mit den Pickwerten von vorne beginnen.
 

PacMani

BeitragDo, Feb 03, 2011 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat mich auch schonmal interessiert. Aber bei Alphasprites. Gibt es für beides vielleicht eine Lösung?

aMul

Sieger des Minimalist Compo 01/13

BeitragFr, Feb 04, 2011 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Andere Möglichkeiten:

1. Das Sprite in mehrere Teile aufteilen und praktisch zwei Sprites benutzten. Je nachdem wie du deine Sprites umgesetzt hast, ist das aber natürlich nur begrenzt möglich.

2. Ein Sprite das aber nicht gepickt wird, dafür dann mehrere Pivots zum Picken. Ähnlich wie 1. aber womöglich einfacher umzusetzen.

3. Eine eigene Pick-Methode schreiben.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

shootermaker

BeitragMi, Feb 09, 2011 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten. Smile
@Silver_Knee
Die Idee ist gut. Hab ich gerade einmal ausprobiert.
Das einzige problem was bei der methode aufkommt, wenn hinter dem gepickten Sprite noch ein Sprite ist wo er durch soll. Ich müsste dann warscheinlich immer noch einen pick ausführen. wird das bei mehrere nicht zu viel? Werd ich noch testen!

Eine andere lösung die mir gerade einfällt:

Gibt es eine Art Pick mit dem ich sagen kann er soll das objekt prüfen, aber den Pick trotzdem durch den weiterführen?
glaub nicht oder?

Linepick wäre dafür ideal aber ich bekomm damit nur das ERSTE Objekt zurück. nicht alle.

Beispiel:

Code:
Graphics3D 640, 480
SetBuffer BackBuffer()
camera = CreateCamera()
MoveEntity camera, - 5, 0, 10
TurnEntity camera, 0, - 90, 0

light = CreateLight()
sphere = CreateSphere(32)
EntityPickMode sphere, 1
PositionEntity sphere, 0, 3, 10

sphere2 = CreateSphere(32)
EntityPickMode sphere2, 1
PositionEntity sphere2, 0, 0, 13

cylinder = CreateCylinder(32)
TurnEntity cylinder, 90, 0, 0
ScaleEntity cylinder, .5, 1000, .5
PositionEntity cylinder, 0, 0, 10

While Not KeyDown(1)
   If KeyDown(208) = 1 Then MoveEntity sphere, 0, - .01, 0
   If KeyDown(200) = 1 Then MoveEntity sphere, 0, .01, 0
   If KeyDown(203) = 1 Then MoveEntity sphere, - .01, 0, 0
   If KeyDown(205) = 1 Then MoveEntity sphere, .01, 0, 0
   UpdateWorld
   RenderWorld
   Text 0, 0, LinePick(0, 0, 0, 0, 0, 20, .5)
   Flip
Wend
End


Weiß jemand dazu eine Lösung?

Silver_Knee

BeitragMi, Feb 09, 2011 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja klar wird das mit der Zeit langsam aber nicht all zu sehr. Picken geht soweit ich weiß relativ schnell.
Bei mehreren Ebenen musst du halt eine Liste aufbauen, die sich merkt welche Sprites schon auf 0 sind um sie später zurückzusetzen
 

shootermaker

BeitragSa, Feb 12, 2011 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Geschafft!

Ich habs endlich Geschafft.

-Picken
-Textur auslesen
-Wenn Mask-farbe, Pick-durchschalten
-Lastpick zurückgeben.

Smile

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group