通知
すべてクリア
17/03/2021 11:14 am
MouseCheckScriptのGun(発射台)をマウスポインタの方を向かせる処理で
Vector3 vSrc = mpFirePrefab.transform.localPosition;
Vector3 vDst = mvMousePoint;
mvArrow = vDst-vSrc;
mfAngX = Vector2.Angle(new Vector2(1,0),new Vector2(mvArrow.z,mvArrow.y)); // View RightSide to LeftSide
if(mvArrow.y>0){ mfAngX*= -1; }
mfAngY = Vector2.Angle(new Vector2(0,1),new Vector2(mvArrow.x,mvArrow.z)); // View Top to Bottom
if(mvArrow.x<0){ mfAngY*= -1; }
の
の部分が何時間考えてもしっくりこなく、困っています。
if(mvArrow.y>0){ mfAngX*= -1;}
の部分が何時間考えてもしっくりこなく、困っています。
もし、マウスカーソルがゲーム画面の右上にある場合、
mvArrowは原点から(x,y,z)=(正、正、正)のベクトルとなり、
mfAngXも正の値になると思います。
この時、mvArrow.yは正なので、mfAngX*= -1;の処理に入ると思いますが、
そうすると、
でGun(発射台)の角度が(負、正、0)となり左を向いてしまうのではと考えてわからなくなっております。
上記の考えのどこの部分で間違ってしまっているのでしょうか?
mvArrowは原点から(x,y,z)=(正、正、正)のベクトルとなり、
mfAngXも正の値になると思います。
この時、mvArrow.yは正なので、mfAngX*= -1;の処理に入ると思いますが、
そうすると、
mpFirePrefab.transform.localEulerAngles = new Vector3(mfAngX,mfAngY,0);
でGun(発射台)の角度が(負、正、0)となり左を向いてしまうのではと考えてわからなくなっております。
上記の考えのどこの部分で間違ってしまっているのでしょうか?
17/03/2021 11:15 am
角度の認識が間違っているかもしれません。
実際にGunオブジェクトのRotationを動かしてみるとわかりますが、Rotation.xをプラスにすると下を向き、Rotation.xをマイナスにすると上を向きます。
次に、Rotation.yをプラスにすると右を向き、Rotation.yをマイナスにすると左を向きます。
右上を向くためには(上、右、正面)を向かないといけないため、(負、正、0)にしないといけないわけですね。