/*animations: * step (|dy| <= 1) (simultaneous slide) * hop (|dy| == 2) (simultaneous slide) * jump (dy > 2) (jump, then slide) * fall (dy < -2) (slide, then fall) * leap (|dx/dz| > 1) (slide with arc) * * special (|dy| <= 1) (simultaneous slide) * special-fall (|dy| > 1) (slide, then fall)*/ public MoveType MoveTypeForMove(Vector3 to, Vector3 from) { float dx = to.x - from.x; float dy = to.y - from.y; float dz = map.AbsDZForMove(to, from); float adz = Mathf.Abs(dz); if (specialMoving) { if (dz != 0) { return(MoveType.SpecialFall); } if (dx != 0 || dy != 0) { return(MoveType.Special); } return(MoveType.None); } if (Mathf.Abs(dx) + Mathf.Abs(dy) > 1) { return(MoveType.Leap); } if (adz <= 1) { return(MoveType.Step); } if (adz == 2) { return(MoveType.Hop); } if (dz > 2) { return(MoveType.Jump); } if (dz < -2) { return(MoveType.Fall); } return(MoveType.None); }