Fix animation bug
This commit is contained in:
@@ -20,46 +20,49 @@
|
|||||||
(set up (set down false)))
|
(set up (set down false)))
|
||||||
(when (and left right)
|
(when (and left right)
|
||||||
(set left (set right false)))
|
(set left (set right false)))
|
||||||
(when (or up down left right)
|
(if (or up down left right)
|
||||||
(deflocal &mut :Float newAngle 0)
|
(let [&mut :Float newAngle 0]
|
||||||
(cond
|
|
||||||
(up
|
|
||||||
(set newAngle -90)
|
|
||||||
(cond
|
(cond
|
||||||
|
(up
|
||||||
|
(set newAngle -90)
|
||||||
|
(cond
|
||||||
|
(left
|
||||||
|
(set newAngle (- newAngle 45)))
|
||||||
|
(right
|
||||||
|
(set newAngle (+ newAngle 45))))
|
||||||
|
(set facing FlxObject.UP))
|
||||||
|
(down
|
||||||
|
(set newAngle 90)
|
||||||
|
(cond
|
||||||
|
(left
|
||||||
|
(set newAngle (+ newAngle 45)))
|
||||||
|
(right
|
||||||
|
(set newAngle (- newAngle 45))))
|
||||||
|
(set facing FlxObject.DOWN))
|
||||||
(left
|
(left
|
||||||
(set newAngle (- newAngle 45)))
|
(set newAngle 180)
|
||||||
|
(set facing FlxObject.LEFT))
|
||||||
(right
|
(right
|
||||||
(set newAngle (+ newAngle 45))))
|
(set newAngle 0)
|
||||||
(set facing FlxObject.UP))
|
(set facing FlxObject.RIGHT)))
|
||||||
(down
|
(velocity.set SPEED 0)
|
||||||
(set newAngle 90)
|
(velocity.rotate (FlxPoint.weak 0 0) newAngle))
|
||||||
(cond
|
(when animation.curAnim
|
||||||
(left
|
(set animation.curAnim.curFrame 0)
|
||||||
(set newAngle (+ newAngle 45)))
|
(animation.curAnim.pause)))
|
||||||
(right
|
|
||||||
(set newAngle (- newAngle 45))))
|
|
||||||
(set facing FlxObject.DOWN))
|
|
||||||
(left
|
|
||||||
(set newAngle 180)
|
|
||||||
(set facing FlxObject.LEFT))
|
|
||||||
(right
|
|
||||||
(set newAngle 0)
|
|
||||||
(set facing FlxObject.RIGHT)))
|
|
||||||
(velocity.set SPEED 0)
|
|
||||||
(velocity.rotate (FlxPoint.weak 0 0) newAngle)))
|
|
||||||
// TODO != is not implemented. Not sure how it would work as a variadic, because other
|
// TODO != is not implemented. Not sure how it would work as a variadic, because other
|
||||||
// Lisps don't have that either
|
// Lisps don't have that either
|
||||||
(when !(and (= 0 velocity.x) (= 0 velocity.y))
|
(when !(and (= 0 velocity.x) (= 0 velocity.y))
|
||||||
(case facing
|
(case facing
|
||||||
((or FlxObject.LEFT FlxObject.RIGHT)
|
((or FlxObject.LEFT FlxObject.RIGHT)
|
||||||
(animation.play "lr"))
|
(animation.play "lr"))
|
||||||
(FlxObject.UP
|
(FlxObject.UP
|
||||||
(animation.play "u"))
|
(animation.play "u"))
|
||||||
(FlxObject.DOWN
|
(FlxObject.DOWN
|
||||||
(animation.play "d"))
|
(animation.play "d"))
|
||||||
(otherwise
|
(otherwise
|
||||||
(return))))
|
(return))))
|
||||||
(return))
|
(return)))
|
||||||
|
|
||||||
(defmethod &override update [:Float elapsed]
|
(defmethod &override update [:Float elapsed]
|
||||||
(updateMovement)
|
(updateMovement)
|
||||||
|
Reference in New Issue
Block a user