Playing an animation for opening a door
Blitz3D Forums/Blitz3D Programming/Playing an animation for opening a door
| ||
| Hi there Just been playing in Blitz and just wants some advice. If i have a hero who steps at a certain stops, playing an opening animation, then the door opens, how will i do this. Before asking, i tried to do this, by following code in my main loop If ((playerx=-287) And (playery=5) And (playerz > 229) And (playerz<250)) Then Animate player_hero,3,10,7 While Animating(player)=0 Then RotateEntity door1,0,90,0 Wend End If But it does not work, i just want, when the player enter the 'hotspot' the character stops, and plays an animation, so even if you press up,down,left,right it has no effect, once the animation is finished, then the door creaks open. For the door i was thinking and tried for door1_number=1 to 90 then RotateEntity door1,door1_number,0 next But again, i want the door to open, the above code does it fast, i had tried delay command, but thats does not work Any help will be much appreciated :) Kind Regards |
| ||
| Well your not rotating until the animation stops, try just doing a: While Animatin(player) Without the zero. |
| ||
Something like:
for door1_number#=1 to 90 step 0.1 then
RotateEntity door1,0,door1_number#,0
next
Instead of:
for door1_number=1 to 90 then
RotateEntity door1,door1_number,0
next
|
| ||
| Thanks for the information, Strider Centaur and GitTech @Strider I wanted to do this, play the hero animation first, then the door will open. So the steps are: 1. Walk to hotspot 2. Player control stops 3. Player plays an opening animation. 4. Door opens 5. Player control resumes Any idea on doing this? @GitTech, thanks for this. Kind Regards |
| ||
| Hmm sounds like a case for states Or good ole Select Case of state in this case. hehe, err sorry. Simply have a state variable that gets set for each step then feed that into a select case, in this instance 2 steps with the first state set by entering the hotspot.
Global doorstate = 0 ; not waiting for a door to open
If ((playerx=-287) And (playery=5) And (playerz > 229) And (playerz<250)) Then
doorstate = 1
End If
doortest()
Function doortest()
If doorstate = 0 Then
Return
Else
Select doorstate
Case 1: ;start player animation at door
Animate player_hero,3,10,7
doorstate = 2
Return
Case 2: ; ok see if still animating
If Not Animating(player)Then
; if not start opening door
doorstate = 0
For door1_number#=1 To 90 Step 0.1
RotateEntity door1,0,door1_number#,0
Next
EndIf
Return
Default
End Select
End If
End Function
Well not sure if this will run, But I think it will give the idea. Oh yea and if doorstate is not 0 then dont allow player controls. |