見出し画像

【マイクラ】角座標ベクトルをXYZ座標ベクトルに変換する

Playerの向いている方向はyaw, pitchは角座標、つまり角度でパラメータを持っています。

しかし、これが時にXYZ座標ベクトルでほしい瞬間が来るのです!
例えば、向ている方向の少し前にパーティクルを表示するとか!

そういった要望が自分から上がったため、本記事は変換する方法を考えてみたいと思います。


マイクラで角座標とXYZ座標の関係性

Playerの角座標パラメータについて
・yaw : 水平方向の首の向き
・pitch : 顎の角度のこと

yawとpitch

この角座標をXYZ座標に関連させると

引用: 空間座標について:基礎編

このような関係性のようです。
ちなみに上右下左から西北東南のようです。不思議ですね。


数式で表そう

float yaw;
float pitch;
double x = -sin(yaw * PI / 180) * cos(pitch * PI / 180);
double y = -sin(pitch * PI / 180);
double z = cos(yaw * PI / 180) * cos(pitch * PI / 180);

PI / 180でラジアンに変換して、三角関数に渡している前提になっています。

この記事が気に入ったらサポートをしてみませんか?