前提・実現したいこと
いつもRotateAroundは、offsetを書かずに組んでいたのですが、こちらの質問を拝見し、
offsetを書く必要性があれば知りたいと思いました。
「RotateAroundは、実行時の回転の中心と回転体の距離(=offset)が保たれて回転する」という認識だったので、
offsetをあえて書く場合、どのようなメリットがあるのか教えていただきたいです。
ご教示お願いします。
また、上記認識が間違っていた場合もご教示お願いします。
試したこと
回転体がカメラだと挙動がわかりにくいので、キューブをカメラに見立て、球をプレイヤーとしました。
下記のコードにおいて、offsetに関するコードのコメントの付け外しの差異をゲーム実行して確認してみましたが、
特に差異はなかったように見えました。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Rotate : MonoBehaviour 6{ 7 [SerializeField] 8 GameObject player; 9 [SerializeField] 10 GameObject cube; 11 12 Vector3 offset; 13 14 void Start() 15 { 16 //offset = transform.position - player.transform.position; 17 } 18 19 void LateUpdate() 20 { 21 //transform.position = player.transform.position + offset; 22 23 if (Input.GetKey ("right")) { 24 cube.transform.RotateAround(player.transform.position,Vector3.up,-2.0f); 25 //offset = cube.transform.position - player.transform.position; 26 } 27 if (Input.GetKey ("left")) { 28 cube.transform.RotateAround(player.transform.position,Vector3.up,2.0f); 29 //offset = cube.transform.position - player.transform.position; 30 } 31 32 } 33}
RotateAroud実行前に、スクリプトでプレイヤーとカメラ(回転の中心と回転体)を適切な距離に調整することが
必要な場合はあるかもしれませんが、
その場合でも、その調整した距離を変数offsetに保存させておく必要はない気がするのですが、
なにかメリットや避けられる不具合などがありましたら、ご教示お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/01 02:26