質問: 3Dのスマホゲームを製作しています。 画面をスワイプした時に、対象となるオブジェクトを 縦スワイプなら画面上の横軸を基準に縦回転、横スワイプなら画面上の縦軸を基準に横回転。 という風に、オブジェクトをワールド軸でもオブジェクトのローカル軸でもなく、カメラのローカル軸を基準に回転させたいです。 (追記:オブジェクトの位置はそのままに、回転方向だけをカメラのローカル軸基準で回転させたいです。) それにはどのようにスクリプトを書けばよいでしょうか? 試したこと。 まずは片方向だけをと思って以下のスクリプトを書いたのですが、実装したいものとは全く別物の回転になってしまいました。 selectedObj.transform.Rotate(mainCamera.transform.up* horDis * rotateSpeed); selectedObj...回転させるオブジェクト mainCamera...メインカメラ horDis...スワイプの水平方向の値 rotateSpeed...インスペクタ上で調整できる値 です。 transform.rightやtransform.forwardにしてもうまくいきません。 方向の設定ミスというより、そもそもメインカメラのローカル軸をセットできていないように感じました。 回答よろしくお願いします。
回答: ``` selectedObj.transform.RotateAround(mainCamera.transform.position, mainCamera.transform.up, horDis * rotateSpeed); ``` 試してないけどこんな感じで、回転中心の位置、回転軸の方向を指定して回転させられます。 Transformはいろいろと便利機能そろってるので、一回リファレンス一通り眺めてみるといいかもです。 https://docs.unity3d.com/ScriptReference/Transform.html