久しぶりです。えんちゃです。
アプリ作成がラストスパートです。
ゲーム時代はできているんですけど、広告がもう少しです。もうすこーしお待ちください。
これからしばらくは、作成したアプリを見直しながら、難しかったところ、学んだところ、大事だと思った箇所を備忘録として書いていきます。
さて今回、オブジェクトをタップした方向に向ける方法を書いていきます。
結論として、
一つはガチ数学を駆使する方法
もう一つは関数LookAtを利用する方法です。
その時のツイート
ぬああ、指定した方向の角度に向いてくれるLookAtなんてクソ便利な関数あったんかい!アークタンジェントとか駆使して作ったのにー pic.twitter.com/M1Eku1Qp5s
— えんちゃ (@entya314) 2019年8月8日
さて気を取り直して書いていきましょう
数学を駆使して回転させる
タップした方向の角度を数式でゴリゴリ求めます。
計算で使う数式を呼び出す
Mathf.関数(数式)
オブジェクトを指定した角度方向に回転させる。
transform.rotation = Quaternion.Euler( [(角度)Vector3]);
これらをつかっていきます。
オブジェクトの座標 - タップした座標を (X,Y,Z)とします。
int rotateVec; rotateVec = (int)(Mathf.Atan( [X] / [Y]) * 180.0 / 3.1415); if ([Y] < 0) { rotateVec = rotateVec + 180; } transform.rotation = Quaternion.Euler(new Vector3(0, 0, 180 - rotateVec));
アークタンジェントで回転角を計算していきます。
アークタンジェントではYが0以上0以下の時をIF文で分けていきます。
うーんめんどくさい。
そんな時、調べてたら見つけてしまった
LookAt関数を使う
なんとこれ、向いてほしい方向のベクトルを書くだけでそっちの方向を向いてくれるという素晴らしい関数です。
transform.LookAt([(タップした座標)Vector3], Vector3.up);
以上です。(^^;;;)
いやー知っているか知らないかって大事ですね。
コメント