Seite 1 von 2
Schrift im Spiel.
Verfasst: 23.05.2005 19:48
von deatwaz
Hi also ich habe mal bei einem Game gesehen, das die schrift aus Sprites besteht bzw aus einem Bild mit allen Zeichen(Buchstaben,Zahlen,Sonderzeichen), so meine frage ist wie kann man es vereinfacht hinbekommen aber den gleichen effekt erziehlt.
mein code für jeden einzelnen buchstaben wäre:
Code: Alles auswählen
;- erster buchstabe
LoadSprite(0,"images\font\standard.png",0)
TransparentSpriteColor(0,180,255,0)
;- zweiter buchstabe
LoadSprite(1,"images\font\standard.png",0)
TransparentSpriteColor(1,180,255,0)
;- erster buchstabe
DisplayTransparentSprite(0,160,120)
ClipSprite(0,0,8,8,8)
;- zweiter buchstabe
DisplayTransparentSprite(1,168,120)
ClipSprite(1,8,8,8,8)
Was ich haben will bzw. anstrebe ist es vereinfacht zu machen über variable oder so. Vieleicht kennt ihr euch da besser aus.
plz help
Verfasst: 23.05.2005 20:04
von NicTheQuick
Du musst dieses Schriftbild nur einmal laden und dann mit [c]ClipSprite()[/c] die einzelnen Buchstaben während dem Darstellen ausschneiden, wenn du den String Zeichen für Zeichen durchgehst.
Reicht das als Ansatz. Was die Befehle machen, ist dir ja anscheinend schon klar.
Ansonsten schau mal ins Code-Archiv oder such hier im Board. Da gibt es schon ein paar Codes.
Verfasst: 23.05.2005 20:11
von deatwaz
ja das problem ist ja nur das die schrift variable angezeigt werden soll also über all wo ich will.
Code: Alles auswählen
LoadSprite(0,"images\font\standard.png",0)
TransparentSpriteColor(0,180,255,0)
repeat
DisplayTransparentSprite(0,160,120)
ClipSprite(0,0,8,8,8)
ClipSprite(0,8,8,8,8)
forever
D7u meinst so? Wenn ja das würd nur das zweite bild angezeigt da die position sich überlapen.
Verfasst: 23.05.2005 20:16
von NicTheQuick
Du musst erst clippen, und dann erst den Buchstaben auf seine Position setzen mit [c]Display...Sprite()[/c].
Schau dir mal die Hilfe etwas genauer an.
Verfasst: 23.05.2005 20:24
von deatwaz
muhaha danke es funzt. Nächstes mal lese ich erst richtig.
Verfasst: 23.05.2005 21:49
von SDX
Ich hab zu meinen PB-Anfängen mal einen kleinen Scroll-Text gebastelt und da hab ich einfach die Buchstaben einzeln geladen. Jeder Buchstabe hieß dann einfach Asc + "Dementsprechender Ascii-Code" + .png (z.B. "Asc65.png" für "A") und die "#Sprite" war natürlich auch der Ascii-Code.
Code: Alles auswählen
For Fon_T.b = 65 To 90
Font$="Asc"+Str(Fon_T)+".png"
LoadSprite(Fon_T, Font$, #PB_Sprite_Texture)
CreateSprite3D(Fon_T, Fon_T)
TransparentSpriteColor(Fon_T, 255, 0, 255)
Next Fon_T
Via Asc(Buchstabe$) kann man ja ohne Prob den Ascii-Code eines Zeichens rausfinden und gleich direkt zum darstellen benutzen. Ich hatte damals übrigens mit Sprite3D() gearbeitet. Das mit dem "Clippen" macht irgendwie jeder. Nunja... muss wohl auch irgendwo Vorteile haben

Verfasst: 24.05.2005 09:08
von DarkDragon
Warum umständlich, wenns auch einfach geht:
http://www.sjcdc.org/scott/A4FG-1_1E.zip
Damit einfach 256 Zeichen auswählen und erstellen.
Dann kann man auch ganz einfach durch ClipSprite die Sache laden. Das ganze geht dann von Zeichen 0 bis 256(oder wars 1 bis 255 oder sowas?) einfach mal ausprobieren.
Verfasst: 24.05.2005 12:38
von the one and only
DarkDragon hat geschrieben: von Zeichen 0 bis 256(oder wars 1 bis 255 oder sowas?)
Nein
Eigentlich gehts von 0 bis 255 und bei uns dummen Menschen die bei 1 anfangen zu zählen bis 256.
Verfasst: 24.05.2005 13:44
von zigapeda
eigentlich geht es bis 2^8 also bis 256 und da der computer bei null zum zählen anfängt ist es von 0 bis 255.
Verfasst: 24.05.2005 13:47
von the one and only
Ich sag jetzt nichts dazu sonst landen wir wieder im Mülleimer. Hab ich ja gesagt da der Computer bei 0 anfängt zu zählen (Was bei genauerem Überlegen auch wesentlich sinnvoller ist als bei 1 anzufangen) gehts bis 255. 256 wegen uns menschlichen n00bs und unserer 1 als erste Zahl.