Pikmin direction calculator


\(\theta:\) Camera depression angle
\(\phi:\) Camera direction angle

View
Zoom
\(\theta=\) 21

\(\phi=\)



\(\Delta\phi=\phi-\mathrm{atan2}(\sin\phi\cos\theta,\cos\phi)=\) 0
\(\Delta\phi:\) Difference between pad input and movement direction



ピクミンにおけるスティック入力方向と移動方向のずれについて

ゲーム画面上でキャラクターを違和感なく操作するためには、マップ上で現在カメラが向いている方角を知る必要がある。
たとえばスティックが右に入力されているときは、「カメラが向いている方角」+「時計回りに90°」の向きにキャラクターが動いていれば、
画面上でもキャラクターが右に動いているように見える。

上図のようにマップの北向きを \(x\) 方向、西向きを \(y\) 方向と定義し、カメラの方向ベクトルの水平成分を \((x,y)\) で表すとき、
カメラの方角 \(\phi\) は \[\phi=\mathrm{atan2}(y,x)\tag{1}\] で計算できる。

しかしピクミンのゲームにおける特定の場面では、おそらく \(\phi\) の計算が間違っている
具体的には、カメラの俯角 \(\theta\) がなぜか計算に含まれていて、 \[\phi_\mathrm{w}=\mathrm{atan2}(y\cos\theta,x)\tag{2}\] という計算式になっているのではないかと思われる。
(式\((1)\)の \(\phi\) と区別するため \(\phi_\mathrm{w}\) とした)

\(\theta\) が0°に近いときは \(\cos\theta\) が1に近いので影響は少ないが、
\(\theta\) が大きくなるにつれ、\(\phi\) と \(\phi_\mathrm{w}\) の間のずれも大きくなっていく。
\(\theta\) は斜め視点のときはズーム段階によって20°、21°、25°と変化し、真上視点のときは60°固定である。

視点ズーム俯角 \(\theta\)\(\cos\theta\)
斜め20°0.9397
21°0.9336
25°0.9063
真上すべて60°0.5000

真上視点のときは \(\cos\theta=\) 0.5であり、
\(y\) 方向、つまり東西方向成分が半分に縮小されてしまう。
このため、スティック入力時の挙動が、全体的に南北方向に傾いてしまう。

式\((1),(2)\)から \(x,y\) を消去すると、 \[\phi_\mathrm{w}=\mathrm{atan2}(\sin\phi\cos\theta,\cos\phi)\tag{3}\] となる。よって、スティック入力時にカメラの方角が \(\phi\) であるとき、本来向くべき角度と実際に向く角度の差 \(\Delta\phi\) は、 \[\Delta\phi=\phi-\mathrm{atan2}(\sin\phi\cos\theta,\cos\phi)\tag{4}\] となる。
\(\phi\) はレーダー画面の方角記号の向きによって確認できる。(要きまぐれなレーダー)

影響する場面

Wii版では壁の裏側にいるとカメラが自動で真上に移動するが、そのときも俯角 \(\theta\) が増加するので、ずれ \(\Delta\phi\) も大きくなる。

Switch版も真上視点だとずれるという情報はあるが、同一原理かどうかは未確認。

ピクミン2では修正されている。

参考文献

ピクミン スティック入力時の移動方向とカメラ角度の関係 - YouTube
Pikmin camera parameters - Pikmin Technical Knowledge Base

2025-08-14