Figur bild Drehen

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

 

Roma3ht

Betreff: Figur bild Drehen

BeitragMo, Aug 18, 2008 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo... Ich hab mich gestern an die Robsite tuts rangemacht....Erste erfolge... nun hab ich meine Map gemacht und mein spieler.... (bewegbar) jetz hab ich folgendes problem ich möchte das wenn ich auf die rechte pfeil taste gehe der spieler nach rechts kuckt...die Grafik dafür hab ich schon aber ich weis nich so richtig wie ich das machen kann....

The_Nici

BeitragMo, Aug 18, 2008 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
LoadAnimImage
hf!
 

Roma3ht

BeitragMo, Aug 18, 2008 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Soll ich das in etwa so machen ?

Code: [AUSKLAPPEN]
If Keydown(205) Then
Player = LoadAnimImage = ("PlayerRechts.png")
Endif [\code]

und am anfang wurde so mein player geladen

player = Loadimage ("palyer.png")


Hab ich ads richtig verstanden `?
 

ChristianK

BeitragMo, Aug 18, 2008 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Bilder lädt man nur einmal, und zwar vor der Hauptschleife. Wenn du in der Hilfe ganz nach unten scrollst, wirst du ein Beispiel finden. Smile
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

da_poller

BeitragMo, Aug 18, 2008 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
nein er meint das so:

du hast also 4 bilder von deinem player(4 blickrichtungen) und die packst du aneinander gereiht in ein bild rein und lädtst das über das LoadAnimImage (ieh bei seinem link nach das ist die funktion erklärt) und anschließend frägst du die tastendrücke ab und stellst den frame des bildes so ein das wenn du hoch drückst der frame aktiv ist in dem der spieler nach oben sieht(für den frame am besten eine variable verwenden heir mal nen codee(ungetestet)

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()
spieler=LoadAnimImage("spieler.png",40,60,1,4)
frame=1
While Not KeyHit(1)
   Cls
   If KeyHit(200) Then
      frame =1 ;spieler schaut nach oben
   ElseIf KeyHit(203)
      frame =2 ;spieler schaut nach links
   ElseIf KeyHit(208)
      frame =3 ;spieler schaut nach unten
   ElseIf KeyHit(205)
      frame =4 ;spieler schaut nach rechts
   EndIf
   DrawImage spieler,spieler_x,spieler_y,frame
   Flip
Wend
   


so in etwa müste das aussehen aber versuch den code zu verstehen nciht nur zu kopieren!!!!!

Smily

BeitragMo, Aug 18, 2008 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich persönlich würde hier eigentlich mit Rotateimage arbeiten.

cu,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

da_poller

BeitragMo, Aug 18, 2008 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
kommt auf den anwendungsfall an... bei einem labyrintspiel bietet sich meine variante besser an in 95% der fälle aber wirklich rotateimage.. wobei mir aufgefallen ist das das die funktion seh langsam ist fals es mehrere bilder werden die vorgerendert werden müsen...
 

CaeSar

Betreff: hi

BeitragMo, Aug 18, 2008 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, er meint sicher, er will wie in CS2D die Person so drehen das sie zur maus zeigt, is das in 2D möglich würde mich auch mal interressieren.

mfg
 

da_poller

Betreff: Re: hi

BeitragMo, Aug 18, 2008 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
CaeSar hat Folgendes geschrieben:
Hi, er meint sicher, er will wie in CS2D die Person so drehen das sie zur maus zeigt, is das in 2D möglich würde mich auch mal interressieren.

mfg


mal so n fetzen meinerseits:
Code: [AUSKLAPPEN]
For winkel = 0 To 359
      player(winkel)=LoadImage("gfx\player.png")
      MidHandle player(winkel)
      MaskImage player(winkel),0,0,255
      RotateImage player(winkel),winkel
   Next


und tada shcon hat man 360 player die da hin sehen wo man will :)

Smily

BeitragDi, Aug 19, 2008 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde das bild nur einmal laden und dann mit copy-image kopien erzeugen. Das schont die Festplatte.
Ausserdem muss nicht um 0 grad gedreht werden.

Code: [AUSKLAPPEN]

player(0)=LoadImage("gfx\player.png")
MidHandle player(0)
MaskImage player(0),0,0,255
For winkel = 1 To 359
      player(winkel) = copyImage(player(0))
      RotateImage player(winkel),winkel
Next


und wer mit maskfarben arbeitet, sollte auch den tformfilter abstellen
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

da_poller

BeitragDi, Aug 19, 2008 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
stimmt die copysache hab ich gar nciht bedacht... mus ich selber mal testen was überhaupt dann schneller ist :)

D2006

Administrator

BeitragDi, Aug 19, 2008 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Nichts für ungut, Smily, aber wenn du das schon so optimierst, kannst du auch ruhig erwähnen, dass es absolut unsinnig ist 360 Einzelbilder zu erstellen. 72 Bilder mit jeweils 5 Grad Drehung reichen immernoch völlig. Das schont den Arbeitsspeicher enorm, verkürzt die Ladezeiten und vermindert die Grafikqualität nicht bedeutend (da mti RotateImage gedrehte Bilder so und so nicht sooo toll aussehen.)
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

ToeB

BeitragDi, Aug 19, 2008 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@Topic :

Oder du hast 4 unterschiedliche Bilder, PlayerOben.PNG,PlayerRechts.PNG etc...

Dann lädst du die :
Dim PlayerImage(3)
PlayerImage(0) = LoadImage("PlayerOben.PNG")
PlayerImage(1) = LoadImage("PlayerRechts.PNG")
etc.

Und dann hasst du ja die Richtung bei der Abrfage der Tasten... Mal dann nur noch das entsprechende Bild Wink

(Übrigens : Das ist fast das gleiche wie LoadAnimImage, mein Beispiel)

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Roma3ht

BeitragDi, Aug 19, 2008 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok^^ habs auf einer bissel anderen art gelöst...kaum hab ich das rpoblem gelöst kommt ein neues...

Wie bei dem spiel (BoxHead) möchte ich peer taste ich nem jetz mal w eine Tonne Plazieren (auf character position)

ich hab das so gemacht

If Keydown(17) Then
Drawimage Barrel, Playerx,Playery
Endif

Klappt auch ganz gut aber wenn ich los lasse ist sie weg. und wenn ich meine position ändere ist sie nicht da sie leuchtet nur kurz auf... kann mir jemand helfen ?
 

Tritium

BeitragDi, Aug 19, 2008 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit DrawImage zeichnest Du die Tonne zwar, speicherst ihre Position aber nicht. Einfacher ist es, sich ein zweidimensionales Feld (mit Dim) anzulegen, da kannst Du dann für jede Position speichern, ob sich dort eine Tonne befindet. Also z.B. so:

Code: [AUSKLAPPEN]
If KeyDown(17) Then
 tonne(spieler_x,spieler_y) = 1
EndIf


Das Feld hab ich, wie Du siehst, tonne genannt, die Spielerposition steckt in spieler_x und spieler_y. Ich hab das im Feld so gemacht, dass eine 1 bedeutet, dass dort eine Tonne steht.

In der Hauptschleife gehst Du das Feld jetzt durch und zeichnest eine Tonne, wenn das für die aktuelle Position so gespeichert ist:

Code: [AUSKLAPPEN]
For x=0 To mapsizex
 For y=0 To mapsizey
  If tonne(x,y) = 1 Then DrawImage barrel,x*skalierung,y*skalierung
 Next
Next


mapsizex und mapsizey geben die Abmessungen der Karte an, barrel ist das geladene Bild Deiner Tonne, skalierung die Größe Deiner maptiles.
 

Roma3ht

BeitragDi, Aug 19, 2008 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja jetz klappts vielen dank^^
 

HeiligerBlitz

BeitragDi, Aug 19, 2008 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Tritium..ich hab das nicht so richtig verstanden kannst du mir pls einen code schicken ? Very Happy Very Happy Very Happy Very Happy
 

Tritium

BeitragDi, Aug 19, 2008 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Code hab ich in meine Antwort geschrieben. Was genau verstehst Du nicht?
 

HeiligerBlitz

BeitragDi, Aug 19, 2008 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
na soll ich den code einfach so wie er steht einfügen ? und wo ? ich bin noch ein änfänger sry . . .
 

Tritium

BeitragDi, Aug 19, 2008 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Dafür, dass man Anfänger ist, braucht man sich nicht zu entschuldigen Very Happy

Den Code kannst Du so übernehmen, nachdem Du die Namen der Variablen angepasst hast. Das erste Stück Code schreibst Du dahin, wo Deine Tasten abgefragt werden. Das zweite dorthin, wo Deine Map gezeichnet wird.

Wenn noch Fragen auftauchen, sag mir bitte, an welcher Stelle genau. Zähl von mir aus zehn oder zwanzig auf, für mich ist es nur viel einfacher, auf eine spezifische Stelle im Code einzugehen als den ganzen pauschal zu erklären. Wink

Gehe zu Seite 1, 2  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group