Figur animieren

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

mavi

Betreff: Figur animieren

BeitragMi, Apr 29, 2009 18:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Liebe Blitzgemeinde,

Ich habe mit der Sufu ein alten Thread gefunden, wo es mir erklärt wurde wie ich eine Figur animiere, aber mein Problem ist wenn ich die animation einbinde und dann das programm starte, dass immer nur die gleichen animationen benutzt werden?!
Ich versteh nicht, obwohl ich andere Frames angebe warum das nicht funktioniert.

Hier alles in einem Paket zum Download, schaut mal drüber:
http://rapidshare.com/files/227180819/RPG.rar

Danke mavi

ComNik

BeitragMi, Apr 29, 2009 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Was dagegen code hier zu posten?
Also ich für meinen Teil hab keine Lust mir alles bei Rapidshare zu saugen.
Is aber nur meine Meinung(ich bin ziemlich faul)

Also bitte Code posten.

lg
ComNIk
WIP: Vorx.Engine
 

mavi

BeitragMi, Apr 29, 2009 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function movement()

If KeyHit(208) Then
   If map(px,py+1) < 1 Then
      py          = py       +    1
      scrolly    = scrolly    +    32
      move      =             1
      herodir      = unten
      heroframe   = heroframe   +   1
   EndIf
EndIf

If KeyHit(200) Then
   If map(px,py-1) < 1 Then
      py         = py      -    1
      scrolly      = scrolly   -   32
      move      =            1
      herodir      = oben
      heroframe    = heroframe   +   1
   EndIf
EndIf

If KeyHit(203) Then
   If map(px-1,py) < 1 Then
      px          = px      -   1
      scrollx    = scrollx   -    32
      move      =            1
      herodir      = links
      heroframe    = heroframe   +   1
   EndIf
EndIf

If KeyHit(205) Then
   If map(px+1,py) < 1 Then
      px         = px      +   1
      scrollx    = scrollx   +   32
      move      =             1
      herodir      = rechts
      heroframe    = heroframe   +   1
   EndIf
EndIf

End Function


Function drawhero()
If move = 1 Then x = px * 32 : y = py * 32 : DrawImage hero,x-scrollx,y-scrolly,heroframe

If herodir = unten Then
   If heroframe > 8 Then
      Heroframe    =   6
   EndIf
EndIf

If herodir = oben Then
   If heroframe > 2 Then
      heroframe   = 0
   EndIf
EndIf

If herodir = links Then
   If heroframe > 11 Then
      heroframe   = 9
   EndIf
EndIf

If herodir = rechts Then
   If heroframe > 5 Then
      heroframe = 3
   EndIf
EndIf


End Function


Code: [AUSKLAPPEN]
Graphics 640,480,16,0
SetBuffer BackBuffer()

;- Images laden -

Global gras    =       LoadImage("gras.bmp")
Global wasser    =      LoadImage("wasser.bmp")
Global hero   =      LoadAnimImage("hero.bmp",24,32,0,11)
MaskImage hero, 255,255,255





;- Variablen -
Global timer    =    CreateTimer(25)
Global karte   
Global px       =   10
Global py      =   7
Global move    =    1
Global scrollx   
Global scrolly
Global x,y
Global time
Global herodir
Global heroframe
Global unten,oben,rechts,links


;- Vorbereitungen laden -
Dim map(31,23)

karte = OpenFile("map.dat")


For y = 0 To 23
   For x = 0 To 31
      map(x,y) = ReadByte(karte)
   Next
Next





;- Hauptschleife :: BEGIN :: -
Repeat
drawmap()
movement()
drawhero()








WaitTimer(timer)
Flip
Cls
Until KeyHit(1):End
;- Hauptschleife :: END :: -
CloseFile karte




;- Include -
Include "func.bb"

ComNik

BeitragMi, Apr 29, 2009 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke! Very Happy
Ich persönlich würde dir einen anderen Ansatz EMPFEHLEN:

Code: [AUSKLAPPEN]

    global  unten = 0      ; unten is gleich dem Frame wo der Spieler nach unten guggt ;)
     global oben = 4       ;      "    "  "          "     "        "  "        "         "     oben  "       "
     global links = 8       ; hoffentlich selbsterklärend...
     global rechts = 12
   
   global move = 0    ; gibt an ob der Player sich gerade bewegt...
   global player_frame
   global player_dir 

   ;Main Looop:
     
     ;Animation:
   if move = 1 then
     player_frame = player_frame + 1     ; Player Frame wird erhöht solange er sich bewegt  (move = 1)
     if player_frame = 4 then player_frame = 0   ; Sonst gehen dir schnell die Frames aus ;)
   end if

   ;Bewegung:
  If KeyDown(208) then               ; Ich hab mir jetz nich die mühe gemacht und nach scancodes geschaut
    player_x = player_x + 2        ; Je nachdem in welche richtung er läuft (sollte dir eig. klar sein)
    move = 1
   player_dir = rechts      ; also hat player_dir = 12
  else
    move = 0               
  end if

 ;... das ganze natürlich auch für links,oben,unten

   ;Zeichnen:
     DrawImage player,player_x,player_y,player_frame + player_dir    ; das is das besondere

   ; Main Looop ende...


     


Das is etwas blöd im Code zu erklären, wenn du das System nich verstanden haben solltest dann FRAG

Eventuell (ganz sicher Very Happy) muss noch ein Timer rein sonst leidet dein Player nämlich unter Hyperaktivität Rolling Eyes

Hoffe das war dein Problem, sonst hab ich alles umsonst geschrieben xDD

lg
ComNIk
WIP: Vorx.Engine

Nicdel

BeitragMi, Apr 29, 2009 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses Forum hat ein praktisches Archiv, in dem man Dateien hochladen kann...
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

mavi

BeitragMi, Apr 29, 2009 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
da ist irgendwie kaum ein unterschied zu meinem?!

ComNik

BeitragMi, Apr 29, 2009 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich das gesehen habe doch, denn du erhöhst das Helden Frame nur, wenn KeyHit(208) (was ich übrigens in KeyDown() ändern würde).

Eventuell habe ich dein Problem nicht ganz verstanden. Könntest du das nochmal schildern?
Ich mache auf jeden Fall meine Animationen immer so. Und hatte damit noch nie ein Problem...

lg
WIP: Vorx.Engine
 

mavi

BeitragMi, Apr 29, 2009 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab extra keyhit genommen ich änder das wieder um aber damit sieht man besser die einzelnen animationen ich änder das noch um und mach das zeitabhänig ;D keine angst aber ....

Ich möchte eine animation erstellen. Die Figur soll einfach animiert laufen mehr möchte ich nicht aber ich bekomms nicht hin ich hab deinen code eingefügt aber, it doesnt work ;D

user posted image
das ist das image Wink

ComNik

BeitragMi, Apr 29, 2009 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hoffe doch, dass du meinen Code nicht unverändert reingenommen hast? Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group