浏览代码

Implement separated animation events;

bjorn 10 年之前
父节点
当前提交
0ef427b8cf
共有 2 个文件被更改,包括 11 次插入2 次删除
  1. 4 0
      data/animation/pigeon.lua
  2. 7 2
      pigeon.lua

+ 4 - 0
data/animation/pigeon.lua

@@ -26,6 +26,10 @@ Pigeon.states.jump = {
   speed = .85
 }
 
+Pigeon.states.flyStart = {
+  loop = false
+}
+
 Pigeon.states.fly = {
   loop = true
 }

+ 7 - 2
pigeon.lua

@@ -45,6 +45,8 @@ function Pigeon:init()
     elseif event.state.name == 'laserEnd' then
       self:changeState('idle')
       self.laser.active = false
+    elseif event.state.name == 'flyStart' then
+      self.animation:set('fly')
     end
   end)
 
@@ -428,12 +430,15 @@ function Pigeon.air:update()
         self.body:applyLinearImpulse(0, -(self.rocketForce + bonusBoost))
       end
 
-      self.animation:set('fly')
+      if self.animation.state.name ~= 'fly' and self.animation.state.name ~= 'flyStart' then
+        self.animation:set('flyStart')
+      end
+
       self.jumped = true
     end
   end
 
-  if self.animation.state.name == 'fly' and (not love.keyboard.isDown(' ') or self.fuel < 1) then
+  if (self.animation.state.name == 'fly' or self.animation.state.name == 'flyStart') and (not love.keyboard.isDown(' ') or self.fuel < 1) then
     self.animation:set('flyEnd')
   end