表に書かれた愛嬌

外から入る値は3つしかない。カーソルの位置、なでたかどうか、ボタンに重なっているかどうか。 人格に見えているものの中身は、下の5行の表と、目標のポーズへ向かうバネだけでできている。

STATE
idle0.00s
INPUTS
lookXnum50.0
lookYnum50.0
nearboolfalse
hoverCTAboolfalse
pettrigger—

lookX / lookY は画面上のカーソル位置。pet は一度だけ立って、消費されると同時に落ちる。

画面の外にある要素でも、真になれば入力として効く。

TRANSITIONS

    上から順に見て、最初に合った行き先へ飛ぶ。直前に発火した行が光る。

    SPRING
    臨界減衰 c = 2√k = 26.1
    いまの c / 2√k = 0.84 — 不足減衰

    硬さを上げるほど臨界は遠くなる。減衰をその値の下に置くと跳ね、上に置くともたつく。 跳ねる側が生きて見え、もたつく側が眠そうに見える境目が、ちょうどこの数値のところにある。

    構造の覚え書き
    入力
    number / boolean / trigger の3種しかない。外の世界はこの型だけで表せる。
    ステート
    「そのときの目標ポーズ」を返すだけの関数。互いを一切知らない。
    遷移
    上から順に評価する表。詰まるのはいつも条件ではなく優先順位のほう。
    補間
    目標ポーズへ全パラメータをバネで寄せる。キーフレームは一枚も無い。
    持続
    dur のあるステートは再生し終わるまで遷移を止める。
    骨
    SVG の <g> をそのまま骨として使い、回転と拡縮だけで動かす。

    この三層(入力・ステート・遷移)の分け方は Rive の State Machine から借りている。 形を潰したり伸ばしたりしないうちは、この範囲でコードのまま書けてしまう。

    ARTBOARD 300 × 264

    なでてみる