あるオブジェクトを中心に回りながら徐々にそのオブジェクトに吸い寄せられるスクリプトを組みたい
オブジェクトを中心に回るスクリプトと中心のオブジェクトに向かって移動するスクリプトを二つ組んだのですがどちらか一つしか起動しません。
これはフレームごとに同じポジションの処理をしているためだと思うのですが何かいい方法ありませんか?
試したこと
フレームごとに同じポジションの処理をしているためだと思うと思ったのはアニメーションでポジションの処理をした時もどちらか一方のポジションしか起動しなかったからです。ただデバックログでは処理は行われているのでそういうことだと思いました。
C#
1[Header("Rotate")] 2 public float moveSpeed = 1.0f; 3 public float circle_radius = 1.0f; 4 5 [Header("Direction")] 6 public bool isFollow; 7 [SerializeField] 8 public float speed; 9 10 private void Start() 11 { 12 isFollow = true; 13 } 14 15 private void Update() 16 { 17 Follow(); 18 Circle(); 19 } 20 void Circle() 21 { 22 Vector2 pos = transform.position; 23 24 float rad = moveSpeed * Mathf.Rad2Deg * Time.time; 25 26 pos.x = Mathf.Cos(rad) * circle_radius * 1.5f; 27 28 pos.y = Mathf.Sin(rad) * circle_radius * 0.6f; 29 30 transform.position = pos; 31 } 32 33 public void Follow() 34 { 35 if (isFollow) 36 { 37 // プレイヤーの現在位置へ向かうベクトルを作成する 38 var angle = Utils.GetAngle( 39 transform.localPosition, 40 PlayerController.instance.transform.localPosition); 41 var direction = Utils.GetDirection(angle); 42 43 // プレイヤーが存在する方向に移動する 44 transform.localPosition += direction * speed * Time.deltaTime; 45 return; 46 } 47 } 48 49コード
自身の回転範囲を徐々に縮めれば理想の処理ができるとは思いますが、疑問がありましたので質問させていただきました。
あと、エラーに関しては特にないです。
回答3件
あなたの回答
tips
プレビュー