Animationsprobleme die zweite

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Dödel

Betreff: Animationsprobleme die zweite

BeitragFr, Dez 30, 2005 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Kaum ist das erste Problem habe ich jetzt promt ein (?) neues:

Sprung- und Lauf-Animationen funktionieren einwandfrei:

BlitzBasic: [AUSKLAPPEN]

If zspeed > 0 And animated = 0 And springen = 0 Then
Animate char, 1, animgschwndgkt, laufanim
animated = 1
ElseIf zspeed < 0 And animated = 0 And springen = 0 Then
Animate char, 1, -animgschwndgkt, laufanim
animated = 1
ElseIf zspeed = 0 And springen = 0 Then
Animate char, 0
animated = 0
EndIf

If springe = 1 Then
Animate char, 3, animgschwndgkt, jumpanim
EndIf

If Animating(char) = 1 Then
animated = 1
Else
animated = 0
EndIf


Soweit so gut, dachte ich mir, aber was wäre denn ein Rollenspiel ohne jegliche andere Bewegung? Ein Kampfsystem sollte her, keines allerdings, wie bei Spielen wie Wow oder "Knight Online World", wo man auf ein kleines Bildhcne drückt und der Charakter voll automatisch tut, was man will, sondern mehr etwas in Richtung Prince of Persia, Matrix oder Jedi Knight, d.h. bei drücken einer Taste schlägt er, bei dürkcne von Sprung und Schlag führt er eine andere Attacke aus.

Ich habe mir ein Type-Gerüst erstellt, in welchem man Bedingungen wie Tasten, Maustasten oder eine Bewegungsgeschwindigkeit angeben kann. Ich frage pro Schleifendurchlauf jeden Eintrag ab und schaue, ob die Bedingungen alle erfüllt sind. Wenn ja, möchte ich den Charakter animieren. Aber daran scheitere ich. Was ich auch versuche, nichts als Bugs, z.B.:

- Animation wird einmal abgespielt, wenn ich stehe, dann nie wieder, es sei denn ich laufe ein paar Schritte

- Animation stoppt nicht mehr

etc.

Ich weiß echt nicht, wie ich den Code aufbauen muss, damit die Animation im Loop abgespielt wird, solange die Bedingungen alle erfüllt sind und stopp, wenn eine von ihnen nicht mehr zutrifft.

Kann mir jemand helfen?

Ich habe zum Beispiel so etwas versucht:
BlitzBasic: [AUSKLAPPEN]

If act\keystat = 1 And act\mousestat = 1 Then
If act\active = 0 Then
act\active = 1
Animate char, 3, animgschwndgkt, act\AnimSequenz
act\mousestat = 0
act\keystat = 0
EndIf
EndIf


Bitte helft mir,
Dödel
 

antome

!!! gesperrt !!!

BeitragFr, Jan 06, 2006 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal die Onlinehilfe an, dort steht das

>> Animate char, 3, animgschwndgkt, jumpanim

Die 3 ist der eingestellte Modus und bedeuted 1 mal abspielen

0 = Stop
1 = Loop
2 = pingpong
3 = 1 mal

ausserden ist ein UPDATEWORLD vor RENDERWORD in der Schleife auch zu empfehlen.
 

Dödel

BeitragDi, Jan 10, 2006 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte entschuldige, aber ich bin nicht der Idiot, für den mich alle halten. Was weißt du über den Codeteil, der updated?? Das einmalige Animieren ist nicht das Problem, das Problem ist die Verknüpfung:
Ich will ja, dass, wenn ein Schlag aktiv ist, Lauf und Sprung Anim nicht abgespielt werden. Außerdem sollen auch "nieder Schläge" nicht funktionieren. D.H. Wenn ich einen Schlag ausführe, bei dem man erst hochspringt und die Axt auf en Kopf des Gegners schlägt, soll ein normaler Schlag niemals starten, aber z.B. eine stärkere Combo (z.B. ein Rundumschlag aus der Luft), deren Bedingungen jetzt erst erfüllt sind, noch starten könnnen...Mist, ist das kompliziert^^

Vllt. ist das Problem jetzt verständlicher. Ich muss mit Variablen verhindern, dass andere Bewegungen, es sei denn sie sind "ranghöher" ausgeführtr werden, sie sollen aber nach Beenden der Animation wieder ausfürhbar sein.

mfg
Dödel
 

antome

!!! gesperrt !!!

BeitragDi, Jan 10, 2006 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann da jetzt auch nur raten zum ausprobieren

Evtl. vor dem wechseln der Animationssequenz die alte Sequenz stoppen und
alle Variablen rücksetzen .

Mit Wert=ANIMATING (Entity) kannst du abfragen ob ein Entity gerade animiert wird.
Wenn nicht kannst du dann wieder die Laufen-Sequenz starten oder was du möchtest.

Oft sind es nur Kleinigkeiten wenn was nicht funktioniert, mir hilft oft
debuglog um rauszufinden was gerade in welcher Variable steht.
 

Dödel

BeitragSa, Jan 21, 2006 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs endlich hinbekommen *ächz* war durchaus komplizierter als angenommen. Das Problem steckte blöderweise in der Schleife, wo Maus und Keyboard abgefragt wurden und damit hatte ich nicht gerechnet. Aber jetzt geht es^^
Danke,
Dödel
 

antome

!!! gesperrt !!!

BeitragSa, Jan 21, 2006 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Gratuliere.

Ja die Kleinigkeiten, an die man gar nicht denkt Laughing

Ich kenne das zur genüge, vor allem wenn der Code mal über 5000 Zeilen hat
dann wird es lustig. Shocked
antome

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group