前提・実現したいこと
Unityにて公転を2周で終了させる方法が知りたいです。
様々な方法で公転させてみましたが、ずっと周り続ける公転しか実現できませんでした。
1周したらカウントをとる方法もわからずです。出来れば、1実行毎に1周の方がシンプルかもしれません。
移動しているキャラの周りを公転しているので、公転の方法によって挙動が変わってしまうので、そこだけ注意してます。
試したこと
RotateAround
以下で公転するオブジェクトを、中心オブジェクトの子にする方法
動きは理想的ですが、半径を指定出来ないのと、出来れば中心の座標から自分の位置を指定したい。
そして2周判定出来ず。
C#
1public class Circle : MonoBehaviour 2{ 3 //中心のオブジェクト 4 private GameObject gObject; 5 //回転のスピード 6 private float speed; 7 8 void Start() 9 { 10 speed = 2.0f; 11 gObject = GameObject.Find("Enemy"); 12 } 13 void Update() 14 { 15 transform.RotateAround(gObject.transform.position, Vector3.forward, speed); 16 } 17 18}
Rigidbody.MovePosition
以下は動きも半径がとれるのも理想的ですが、2周だけというのが実行出来ず…
C#
1void Update() { 2 if (gObject == null) { 3 return; 4 } 5 Vector3 offset = new Vector3(radius * Mathf.Sin(Time.time * speed), radius * Mathf.Cos(Time.time * speed)); 6 rb.MovePosition(gObject.transform.position + offset); 7 }
Quaternion.AngleAxis
以下のサイトを参考にしましたが、これも以下で回転の位置をとってるので、2周だけというのが困難でした…
あと追従しながら回転する時の動きがなんか変でした。
C#
1360 / _period * Time.deltaTime
回答1件
あなたの回答
tips
プレビュー