make whip attack smoother when facing right (by doubling frames and manually coding interpolations)

This commit is contained in:
2025-03-21 10:17:40 +00:00
parent 0d34db359c
commit a0aac81b6c
3 changed files with 99 additions and 16 deletions

View File

@@ -86,7 +86,7 @@ struct
fun helpGetMainAttackPatches (attackHeld, mainAttackPressed, charge, acc) =
let
val attack =
if attackHeld andalso not mainAttackPressed then MAIN_ATTACKING 1
if attackHeld andalso not mainAttackPressed then MAIN_ATTACKING 0
else MAIN_NOT_ATTACKING
in
W_MAIN_ATTACK_PRESSED (attackHeld andalso mainAttackPressed)
@@ -484,9 +484,8 @@ struct
fun getFieldVec (player: player, width, height) =
case #mainAttack player of
MAIN_ATTACKING amt =>
MAIN_ATTACKING frame =>
let
val frame = amt div 2
val {x, y, facing, ...} = player
val wratio = width / Constants.worldWidthReal
val hratio = height / Constants.worldHeightReal
@@ -502,7 +501,7 @@ struct
val boxes =
case facing of
FACING_RIGHT => Vector.sub (Whip.rightFrames, frame)
| FACING_LEFT => Vector.sub (Whip.leftFrames, frame)
| FACING_LEFT => Vector.sub (Whip.leftFrames, frame div 2)
in
helpGetWhipVec
(x, y, wratio, 0.0, yOffset, 0, boxes, width, height, [])
@@ -518,7 +517,7 @@ struct
val boxes =
case facing of
FACING_RIGHT => Vector.sub (Whip.rightFrames, frame)
| FACING_LEFT => Vector.sub (Whip.leftFrames, frame)
| FACING_LEFT => Vector.sub (Whip.leftFrames, frame div 2)
in
helpGetWhipVec
(x, y, hratio, xOffset, 0.0, 0, boxes, width, height, [])

View File

@@ -13,41 +13,90 @@ struct
]
val rf2 =
#[ {x = 66, y = ~15}
, {x = 65, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf3 =
#[ {x = 67, y = ~15}
, {x = 66, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf3 =
val rf4 =
#[ {x = 70, y = ~15}
, {x = 68, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf5 =
#[ {x = 73, y = ~15}
, {x = 70, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf4 =
val rf6 =
#[ {x = 77, y = ~15}
, {x = 73, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf7 =
#[ {x = 83, y = ~15}
, {x = 75, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf5 =
val rf8 =
#[ {x = 85, y = ~15}
, {x = 77, y = 2}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf9 =
#[ {x = 87, y = ~5}
, {x = 79, y = 6}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf6 =
val rf10 =
#[ {x = 91, y = ~3}
, {x = 79, y = 3}
, {x = 64, y = 18}
, {x = 49, y = 25}
]
val rf11 =
#[ {x = 96, y = 5}
, {x = 80, y = 10}
, {x = 64, y = 15}
, {x = 49, y = 25}
]
val rf12 =
#[ {x = 96, y = 10}
, {x = 80, y = 15}
, {x = 64, y = 20}
, {x = 49, y = 25}
]
val rf7 =
val rf13 =
#[ {x = 96, y = 15}
, {x = 80, y = 20}
, {x = 64, y = 23}
, {x = 49, y = 25}
]
val rf14 =
#[ {x = 112, y = 25}
, {x = 96, y = 28}
, {x = 80, y = 25}
@@ -55,7 +104,15 @@ struct
, {x = 49, y = 25}
]
val rf8 =
val rf15 =
#[ {x = 112, y = 25}
, {x = 96, y = 23}
, {x = 80, y = 25}
, {x = 64, y = 23}
, {x = 49, y = 25}
]
val rf16 =
#[ {x = 112, y = 25}
, {x = 96, y = 28}
, {x = 80, y = 25}
@@ -63,29 +120,56 @@ struct
, {x = 49, y = 25}
]
val rf9 =
val rf17 =
#[ {x = 112, y = 31}
, {x = 96, y = 29}
, {x = 80, y = 27}
, {x = 64, y = 27}
, {x = 49, y = 25}
]
val rf18 =
#[ {x = 96, y = 31}
, {x = 80, y = 29}
, {x = 64, y = 27}
, {x = 49, y = 25}
]
val rf10 =
val rf19 =
#[ {x = 99, y = 33}
, {x = 80, y = 29}
, {x = 64, y = 27}
, {x = 49, y = 25}
]
val rf20 =
#[ {x = 80, y = 33}
, {x = 64, y = 29}
, {x = 49, y = 25}
]
val rf11 =
val rf21 =
#[ {x = 83, y = 35}
, {x = 64, y = 29}
, {x = 49, y = 25}
]
val rf22 =
#[ {x = 64, y = 31}
, {x = 49, y = 25}
]
val rf12 =
val rf23 =
#[ {x = 67, y = 34}
, {x = 49, y = 25}
]
val rf24 =
#[ {x = 49, y = 25} ]
val rightFrames = #[
rf1, rf2, rf3, rf4, rf5, rf6, rf7, rf8, rf9, rf10, rf11, rf12
rf1, rf2, rf3, rf4, rf5, rf6, rf7, rf8, rf9, rf10, rf11, rf12, rf13, rf14,
rf15, rf16, rf17, rf18, rf19, rf20, rf21, rf22, rf23, rf24
]
(* left frames *)