おみくじ演出に「弾き玉」(スリングショット)を追加し、装置を差し替え式にする - #242
Merged
Merged
Conversation
演出のパターンを増やしたい。まず Angry Birds のように玉を引き絞って放つ 「弾き玉」を追加する。 装置(からくり)を差し替えられるよう、OmikujiScene から装置固有の座標や操作を 抜き、共通インターフェース(omikujiMachines.js)だけで幕を進める形にした。 鈴の緒装置は本体をそのままに、同じ形に包んだ。引くたびにランダムに選ばれ、 ?scene= で固定もできる。 弾き玉の設計: - 放して支点を通り過ぎた瞬間に切り離す。判定は引いた向きとの内積 (固定条件だと垂直気味の引きで永久にぶら下がった) - 射出速度に上限。速すぎると壁を突き抜けて場外へ落ちる。壁も厚く - 繋がっている間は玉の自重を打ち消す。柔らかいゴムがたわんで眠れないため - 櫓の木札はスリープで凍結。触られるまで完全静止 - 狙いが外れても、玉と木札が静まったら物音で狐が起きる。タイムボックスを 待たずに数秒で進む ヘッドレス検証(simulate-omikuji-slingshot.js)で引きの角度×強さ45点を掃引: 44点が最遅3.7秒で狐に到達、残り1点も2.8秒で静止、無操作の静止OK。 鈴の緒装置の既存検証も変わらず通る。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU
data に入れると Vue 2 が装置モジュール(共有オブジェクト)を丸ごとリアクティブ化 して __ob__ を生やし、ヘッドレス検証と共有しているモジュールの中身を書き換えて しまう。装置は生成時に確定して以後変わらないので computed で十分。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU
bodyB を null にして残すと、拘束が描画に残ったり、点と点の空拘束が毎ステップ 解かれたりする。切り離した時点で Composite.remove する。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU
ゴムを世界から外しても elastic.bodyB が玉のままだったため、「繋がっている間は 自重を打ち消す」処理が放った後も効き続け、玉が無重力で漂って静止しなかった (掃引で静止 24.8s、未到達が増えて発覚)。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU
静まれば物音で狐が起きる設計なので、届かなくても 8 秒以内に静まれば演出は 完走する。放てない・場外へ抜ける・いつまでも転がり続ける、だけを失敗にする。 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU
kojira
pushed a commit
that referenced
this pull request
Sep 1, 2026
kojira
added a commit
that referenced
this pull request
Sep 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
目的
おみくじの演出パターンを増やす。第1弾として Angry Birds のように玉を引き絞って放つ
「弾き玉」(スリングショット) を追加する。ピンボールは次の PR。
変更
装置(からくり)を差し替え式に
OmikujiScene.vueから装置固有の座標・操作(鈴の緒を振る等)を抜き、共通インターフェース(
omikujiMachines.js)だけで「儀式 → 見せ場 → 狐が本命へ着地」の3幕を進める形にした。鈴の緒装置は本体(
buildMachineWorld等)をそのままに、同じ形に包んだ。machines.pick())?scene=slingshot/?scene=bellで固定できる(確認用)omikujiFox.jsのまま)弾き玉(
omikujiSlingshot.js)御神玉をつまんで引き絞り、放す → 木札の櫓に直撃して崩れる → 木札か玉が寝ている狐に当たる。
ヘッドレス検証で潰した問題:
createSettleDetector)scripts/simulate-omikuji-slingshot.jsで引きの角度×強さ 45 点を掃引:鈴の緒装置の既存検証(
simulate-omikuji.js --sweep 31)は変わらず失敗 0。確認方法(dev)
/omikuji?scene=slingshotで弾き玉を固定して引く。玉をつまんで左下へ引き、放す/omikuji?scene=bellで従来の鈴の緒が変わっていないことを見る?scene=無しで引くと、どちらかがランダムに出るyarn generate通過。🤖 Generated with Claude Code
https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU
Generated by Claude Code