最近Combat Camera FixというModが公開されました。抜刀中でもカメラを回転させてプレイヤーを360度の角度から自由に眺めることが出来るようにするというものです。
なんとなくソースコードを読んでいたら、仕組みがわかりました。Skyrimは、プレイヤーの抜刀アニメーション中にカメラをロックする命令が投げられて、納刀するとロックを解除する命令が投げられるようです。
この命令というはアニメーションのhkxファイルに含まれているようです。例えばキルムーブのアニメーションは対象にKill命令が送られることで相手が死にます。なんでこんなことをしているのかというと、死ぬタイミングはアニメーションの動きと密接に繋がっているため、タイミングをきちんと合わせるためにこうなっているのだと思われます。
Skyrimにはカメラの対象という概念があり、これはPapyrusやコンソールから変更できます。カメラをロックする命令は、カメラの対象がプレイヤーの場合にだけ送られるようです。つまり、カメラの対象をプレイヤー以外の何かに移しておいて、プレイヤーを抜刀させてからカメラの対象をプレイヤーに戻すことで、カメラのロックを防ぐことができるわけです。
Combat Camera FixはダミーのActorをプレイヤーの位置に持ってきて、ダミーにカメラを移しています。
このようにSkyrimは単純な物の組み合わせや使い方で色々なことを実現しているので、仕組みがわかってしまえばなんてことはないんですね。