[B3D] Animationsproblem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: [B3D] Animationsproblem

BeitragSa, Jan 03, 2009 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
*Scroll Down*
  • Zuletzt bearbeitet von N0X am So, Jan 04, 2009 20:51, insgesamt 2-mal bearbeitet

ZaP

BeitragSa, Jan 03, 2009 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube bei dem Blitz Font sind alle Zeichen normalerweise 8, 10 oder 12 Pixel breit, d.h. du kannst dir die Länge des Strings in Pixeln leicht ausrechnen. Wenn das nicht so ist, nimm einen Bitmapfont.
Starfare: Worklog, Website (download)

the FR3AK

BeitragSa, Jan 03, 2009 23:49
Antworten mit Zitat
Benutzer-Profile anzeigen
StringWidth sollte da helfen oder?

N0X

BeitragSo, Jan 04, 2009 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist bei dem Code etwas kompiziert Confused

Code: [AUSKLAPPEN]

Graphics3D 1024,768

Repeat

     CameraProject cam,EntityX(testObjekt),EntityY(testObjekt),EntityZ(testObjekt)

     ShowClicked()

     UpdateWorld()
     RenderWorld()

     Flip
     Cls

Until KeyHit(1)
End


Function ShowClicked()
   
   Text ProjectedX()-40,ProjectedY()-120,"Test Objekt"
   
   DrawImage bgDing,ProjectedX()-60,ProjectedY()-120
   DrawImage bgDing,ProjectedX()+60,ProjectedY()-120   
   
End Function
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

skey-z

BeitragSo, Jan 04, 2009 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö, ist überhaupt nicht schwierig;)

Code: [AUSKLAPPEN]

Function ShowClicked()

  px = projectedx()                   ;x-Koordinate vom Objekt
  py = projectedy()-120            ;y-Koordinate vom Objekt

  txt$ = "Test Object"               ;Text für die Anzeige
  size = stringwidth(txt$)          ;Textlänge
   
   Text px, py, txt$, 1, 1            ;Text mittig über dem Objekt zeichnen
   
   DrawImage bgDing,px-size/2-50, py                ;Bild links vom text
   DrawImage bgDing,px+size/2+50,py               ;Bild rechts vom Text
   
End Function


schau mal, sollte funktioneren

Außerdem solltest du Befehle, die einen Rückgabewert haben und sich zB. in einer Funktion, nicht ändern, in eine Variable packen, wenn du diese Mehrmals benötigst.

Das hat 2 Vorteile, es ist übersichtlicher und verbraucht weniger rechenzeit
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

N0X

BeitragSo, Jan 04, 2009 1:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat bestens geklappt !

Vielen Dank !

Hab schon weder n neues Problem (darf ich das hier posten ?)
Und zwar gehts um Animation:
Ich hab nen Player der auf Tastendruck "W" vorwärts geht (mit entsprechender Animation.
Jetzt soll er mit "S" rückwärtslaufen und die Animation soll einfach rückwärts abgespielt werden !
Wie mach ich das ?

Hier der entsprechende Code: [AUSKLAPPEN]
;Variablen
Global seq=1

Global plySpeed=1

;--------------------------------------------------------------------------------------------|

Repeat
   
   PlayerBewegen()
   
   UpdateWorld()
   RenderWorld()
   
   Flip
   Cls
   
Until KeyHit(1)
End

;--------------------------------------------------------------------------------------------|

Function PlayerBewegen()
   
   If KeyDown(17) Then
      MoveEntity player,0,0,plySpeed
      If Not Animating(player)
         ExtractAnimSeq player,2,14
         Animate player,1,.2,seq,1
      EndIf
   EndIf
   
   If KeyDown(31)  Then
      MoveEntity player,0,0,-plyspeed
      If Not Animating(player)
         ExtractAnimSeq player,2,14
         Animate player,1,-0.2,seq,1
      EndIf
   EndIf
   
   
   If Not KeyDown(17) Or KeyDown(31) Then Animate player,0
   
End Function


Ich hoffe ich durfte das Thema weiterführen und hoffe das ihr mir helfen könnt Smile

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

the FR3AK

BeitragSo, Jan 04, 2009 1:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaub einfach Animationsspeed auf -1 stellen...

N0X

BeitragSo, Jan 04, 2009 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab' ich ja schon !
Bei der 2. "if not animating" Schleife.
plySpeed ist nur zum Bewegen mit "MoveEntity" !

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Holzchopf

Meisterpacker

BeitragSo, Jan 04, 2009 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If Not KeyDown(17) Or KeyDown(31) Then Animate player,0


Da wird der Fehler liegen! Müsste wohl eher so lauten:
Code: [AUSKLAPPEN]
If Not ( KeyDown(17) Or KeyDown(31) ) Then Animate player,0


Da du die Animation ja stoppen willst, wenn keine der Beiden Tasten gedrückt ist. Deine Variante der If-Prüfung schaut allerdings, ob Taste 17 nicht gedrückt, oder ob Taste 31 gedrückt wird und stoppt demnach die Animation.

Es gibt noch weitere Möglichkeiten, dass zu Prüffen, zB
Code: [AUSKLAPPEN]
If KeyDown(17) +KeyDown(31) = 0 Then
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

N0X

BeitragSo, Jan 04, 2009 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Das verstehe ich!

Hat leider trotzdem nicht geklappt ... Confused

Im Moment spielt das Programm nur die Animation ab, die als erstes gedrückt wurde.
(Ist ja nur eine Animation, ich meine aber die Geschwindigkeit (1 oder -1))

Mfg,
N0X

Edit:
Jetzt hab' ich es schon soweit hinbekommen das ich wenn ich "W" gedrückt habe er die Animation nach vorne abspielt und wenn man "S" gedrückt hat nach hinten. Aber jetzt geht es nicht wenn ich "W" oder "S" gedrückt halte weil "Animate" ja in der Schleife steht !
Kann mir da jemand helfen ?

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group