Flinch (bird, hurt)

The hurt of the game cycles for birds: a quick recoil from a hit, the wings thrown up and the eyes shut, back to standing in 0.4 seconds, for a game to play the instant the bird takes damage.

A cartoon person and a dog caught mid-flinch, arms thrown wide and eyes shut.

Use it in a cartoonOpen it in the block editorThe pack file (JSON)

What it is for

Flinch (bird, hurt) is the hurt of the nine game cycles, written for the bird set: the same short, 0.4-second reaction as Flinch (hurt), but thrown with the wings rather than two arms, since a bird has nothing else to guard its face with.

The principle it shows: slow in and slow out

The recoil snaps in fast, 0.08 seconds, then eases back to normal over four times as long, 0.32 seconds, exactly the same asymmetry the upright hurt uses. The quick strike and the slow recovery either side of it are what keep a 0.4-second reaction from reading as a single flat twitch.

The program, line by line

settings: h = 540, leg = 0.05
when it starts
  show the side view
  look surprised
  at the same time:
    — 1:
      glide left leg 12, right leg 12, left foot -12, right foot -12, torso 3, head 16, tail -12, left arm -70, right arm 70, blink 1 over 0.08 s (out)
    — 2:
      set dx 0, dy 0
      for 0.08 s:
        dy follows (h*leg*(1 - cos(((0 + 12*sin((min(local/0.08, 1))*pi/2)))*pi/180)))
        dx follows (-h*leg*sin(((0 + 12*sin((min(local/0.08, 1))*pi/2)))*pi/180))
  set dx (-h*leg*sin((12)*pi/180)), dy (h*leg*(1 - cos((12)*pi/180)))
  at the same time:
    — 1:
      glide left leg 0, right leg 0, left foot 0, right foot 0, torso 0, head 0, tail 0, left arm 0, right arm 0, blink 0 over 0.32 s (smooth)
    — 2:
      set dx 0, dy 0
      for 0.32 s:
        dy follows (h*leg*(1 - cos(((12 + -12*smoothstep(min(local/0.32, 1))))*pi/180)))
        dx follows (-h*leg*sin(((12 + -12*smoothstep(min(local/0.32, 1))))*pi/180))
  set dx (-h*leg*sin((0)*pi/180)), dy (h*leg*(1 - cos((0)*pi/180)))
  look normal

Written out in full, exactly as the engine prints them:

h*leg*(1 - cos(((0 + 12*sin((min(local/0.08, 1))*pi/2)))*pi/180))

-h*leg*sin(((0 + 12*sin((min(local/0.08, 1))*pi/2)))*pi/180)

-h*leg*sin((12)*pi/180)

h*leg*(1 - cos((12)*pi/180))

h*leg*(1 - cos(((12 + -12*smoothstep(min(local/0.32, 1))))*pi/180))

-h*leg*sin(((12 + -12*smoothstep(min(local/0.32, 1))))*pi/180)

-h*leg*sin((0)*pi/180)

h*leg*(1 - cos((0)*pi/180))

Try this

  1. Take 0.3 seconds to flinch back instead of 0.08. The recoil becomes a slow wince rather than a sudden snap.

    In the program: ramp · over 0.08 → 0.3

  2. Throw the head back 30 degrees instead of 16. The bird's whole posture reads as far more startled by the hit.

    In the program: ramp · to.part:head 16 → 30

How it differs from Flinch (hurt) and Cheer (bird, win)

Flinch (hurt) is the same reaction thrown with two arms rather than wings. Cheer (bird, win) is the opposite reaction on the same body, a happy hop rather than a recoil.

Works on

Worked out by the build: it plays the move in the engine on each body and checks what moves on screen. Nobody types this table.
BodyMoves?What moves
2 legs (a person)yeswhole body, turns, head, arms, legs
4 legs (a dog)yeswhole body, head, front legs, back legs, tail, ears
no legs (the monster with no legs)yeswhole body, turns, arms, tail

c4c:beh:cycle_hurt_bird · version 1.0.0 · c4c-free · by Jabbertoon