物理エンジンを利用してドミノ倒しを作ってみた。
好きなように配置して、どれかを適当に倒してやると 最後まで倒れてくれる。
すべての物体を常に処理し続けると遅くなるので ある程度動きがないものは処理から外すのがポイント。 サンプルでは視認しやすいように 物理計算中の物体が水色で、そうでないものを赤で表示している。
ただ、ドミノが綺麗に倒れるようになるまでに 数値的な試行錯誤がかなりあった。
ドミノは縦長で薄い直方体がベストだが、 質量が小さいと軽すぎて倒れる速度が遅くなり、 ドミノ倒しの気持ちよさが出ない。
さらに表面摩擦が大きいと、倒れてきたドミノがつっかえて 次のドミノを倒してくれない。 かといって摩擦が小さいと倒れた後のドミノが 折り重なった状態からさらに滑り、 ペタンと地面に接地してしまってドミノっぽくない。
結局、地面との摩擦は大きくしておいて ドミノ同士の摩擦を小さくするのがベストだった。 これなら倒れやすく、倒れたあとのドミノは 地面の摩擦が支えてくれる。
日常生活で普通に起こっていることを再現するのは意外と難しい。 でも面白い。
|