Seite 2 von 2
Verfasst: 05.06.2006 11:24
von sen-me
dann starte erst startdrawing wieder wenn sich was ändert (d.h. du amchstn sprite, und immer wnen sich was endert ein neuen)
Verfasst: 05.06.2006 11:35
von Ghost
Dann kommen die Probleme sobald sich was verändert.
also alte Sprite Output löscht sich net .
Mit Flippbuffers und clearscreen stockt es und das alte SpriteOutpu löscht sich nicht.
und das SpriteOutput Zeicnet sich wieder auf alle Sprites der selben Id
(glaube liegt an Prblem eins.
Verfasst: 05.06.2006 11:48
von sen-me
Hä?
if leben <> altleben
altleben = leben
createsprite(0,...)
startdrawing(spriteoutput(0))
...
stopdrawing()
endif
Verfasst: 05.06.2006 12:02
von Ghost
ob ich nun noch eine neue Variable mit reinneme oder gleich mit der alten weiter arbeite bleibt sich gleich
(also ob ich nun erst altleben anzeigen lasse oder leben anzeigen lasse beide sind ja gleich)
Verfasst: 05.06.2006 12:14
von Kaeru Gaman
@ghost
FlipBuffers kannst du dir sparen, weil ein sprite keinen backbuffer besitzt wie ein screen.
wenn du sowas machen willst, musst du 2 sprites nehmen, die du selber switchst, also, immer abwechselnd auf eins zeichnen während das andere angezeigt wird.
> und 2. Also ich habe das Sprite mehrmals auf den Bildschirm und anstatt den Punkt nur auf dem betroffenen Sprite zu verschieben macht er dies auf alle Sprits der selben Strucktur.
netürlich, denn deine display befehle sagen ihm nur, wo er das aktuelle sprite hinmalen soll. wenn du das sprite veränderst, wird es über so angezeigt, wie du es verändert hast, wie sollte der rechner denn wissen, wie es vorher aussah.
aber irgendwie komm ich nich so ganz mit, was du eigentlich vorhast...
Verfasst: 05.06.2006 12:34
von Ghost
Also muss ich ein neues Sprite nehmen auf dem ich Zeichne und das direckt hinter den Sprite der betroffenen Strucktur sitzt oder?
>netürlich, denn deine display befehle sagen ihm nur, wo er das aktuelle sprite hinmalen soll. wenn du das sprite veränderst, wird es über so angezeigt, wie du es verändert hast, wie sollte der rechner denn wissen, wie es vorher aussah.
Gibt es eine Möglichkeit dies zu verändern?
aber irgendwie komm ich nich so ganz mit, was du eigentlich vorhast...
Ich sitze wieder an meinen kleinen Spaceshooter und wollte den Gegner eine kleine Anzeige verpassen wie viele treffer man noch braucht ehe er zerstört ist (also im Grunde nur ein kleiner balken der seine "Lebenspunkte angibt.Denkt man an ComanderConqer,Dune 2077 oder andere solche Spiele da ist doch immer so eine anzeige (meistens Grün)über die Soldaten und gebäudeund sowas sollte es werden)
Verfasst: 05.06.2006 12:47
von Kaeru Gaman
ach SO
ähm.. dann machs besser anders.
- das gegnersprite lass unverändert, damit du auch andere gegner so anzeigen kannst.
das war ja eines deiner probleme.
- die darstellung eines energiebalkens kannst du direkt auf den screen vornehmen.
du stellst also in der nähe der koordinaten des gegner einen balken dar.
je nachdem ob der balken über oder unter dem gegner sein soll,
musst du halt zu deinen x/y-koordinaten aus der struct was abziehen/zuzählen.
a)
das könntest du als sprite machen (zwar nette effekte möglich aber umständlich)
also, ein schickes sprite was der balken sein soll, da kann man dann halt ein muster drauf haben, und den kürzt du vor jeder anzeige mit ClipSprite.
aber da der balken sehr groß sein muss, damit man das muster sehen kann, wär das wohl übertrieben.
b)
du machst das mit DirectDraw (also den Draw-Befehlen von PB)
wenn der balken dicker als 1 pixel sein soll, nimmst du Box(),
wenn ein einzelnel pix dicke genügt, nimm Line()
mach für die balkendarstellung in eine eigene schleife, damit du nur EINMAL Startdrawing() brauchst.
probier mal so:
(die struct-elemente für die koordinaten anpassen, hab einfach mal geraten)
Code: Alles auswählen
StartDrawing(ScreenOutput())
FrontColor(#Gegner_Balkenfarbe)
ResetList(Jaeger())
While NextElement(Jaeger())
Box(Jaeger()\X,Jaeger()\Y+13,Jaeger()\Armor, 2)
Wend
StopDrawing()
Verfasst: 05.06.2006 13:01
von Ghost
Danke
