プレイヤーの周りを周回するオブジェクトで同じ角度で複数のオブジェクトを整列させて周回させる方法が知りたい

提示コードのコメント部内部ですが現状の状況部なのですが実装したい事を行うにはどうしたらいいのでしょうか?コメント部内部の
instanceList[i].gameObject.transform.rotation = Quaternion.FromToRotation(Vector3.up,rotatedVector);をどうしたらいいのか知りたいです。座標は angleInDegrees分離しているので問題なのですが、回転部をどう変更すればいいのでしょうか?

マウスの位置の向きに複数のオブジェクトがその方向を向くがオブジェクトの回転が放射線状になってしまう下記参考画像の現状参照

#実装したい事
参考画像の実装したい事部のような処理を実現するに当たり///コメント部内部はどうしたらいいのでしょうか?
特にinstanceList[i].gameObject.transform.rotation = Quaternion.FromToRotation(Vector3.up,rotatedVector);の記述の仕方が知りたいです。

instanceList[i].gameObject.transform.rotation = Quaternion.FromToRotation(Vector3.up,vec);としてプレイヤーとマウスとのベクトルをそのまま入れていましたが、オブジェクトが綺麗に整列しないのでおかしいです。

現状

イメージ説明

実装したいこと

イメージ説明

cs

1using System.Collections;2using System.Collections.Generic;3using System.IO;4using UnityEngine;5using DG.Tweening;6using static UnityEngine.GraphicsBuffer;7using UnityEngine.UIElements;8using System;9 10public class Equipment : MonoBehaviour11{12 private bool isAttack = false; 13 [SerializeField] private GameObject playerObject;14 [SerializeField] private float angleCorrection = 10; // 回転補正値15 [SerializeField] private float range = 1;16 private Quaternion quaternion;17 private bool isMove = false;18 19 private float angleInDegrees = 20f;20 Vector3 vec = new Vector3(0,0,0);21 22 public List<GameObject> itemList = new List<GameObject>();23 List<GameObject> instanceList = new List<GameObject>();24 GameObject selectedObject; 25 26 public float reloadTime = 1; 27 28 void Start()29 {30 31 selectedObject = itemList[0];32 instanceList.Add(Instantiate(itemList[0], new Vector3(0, 0, 0), Quaternion.identity)); 33 instanceList.Add(Instantiate(itemList[0], new Vector3(0, 0, 0), Quaternion.identity)); 34 instanceList.Add(Instantiate(itemList[0], new Vector3(0, 0, 0), Quaternion.identity)); 35 }3637 private void Rotate()38 {39 //マウス座標40 Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);41 mousePosition.z = 0;42 43 vec = (mousePosition - playerObject.transform.position).normalized;44 45 for(int i = 0; i < instanceList.Count; i++)46 {47 Quaternion rotation = Quaternion.Euler(0f, 0f, angleInDegrees * i);48 Vector3 rotatedVector = rotation * vec; 49 instanceList[i].gameObject.transform.position = playerObject.transform.position + rotatedVector * 1;50 instanceList[i].gameObject.transform.rotation = Quaternion.FromToRotation(Vector3.up,rotatedVector); 51 }52 }5354 void setReload()55 {56 instanceList.Add(Instantiate(selectedObject));57 }58 59 60 void Update()61 {62 63 Rotate();64 if(Input.GetMouseButtonDown(0) == true)65 {66 Invoke(nameof(setReload), 3.0f);67 isMove = true;68 Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);69 mousePosition.z = 0;70 71 vec = (mousePosition - playerObject.transform.position).normalized;72 int count = instanceList.Count;73 for(int i = 0; i < instanceList.Count; i++)74 {75 Quaternion rotation = Quaternion.Euler(0f, 0, angleInDegrees * i);76 Vector3 rotatedVector = rotation * vec; 77 78 instanceList[i].GetComponent<Weapon>().setShoot(rotatedVector);79 }80 81 instanceList.Clear();82 }83 } 84}

コメントを投稿

0 コメント