前提・実現したいこと
unityで円状に回るCubeを作っています。
1,キーを離しても、移動後そのままその位置にとどまるようにしたい。
2,再びのキー操作のときにも、その地点から移動させたい。
3,オブジェクトの初期位置と大きさInspectorで設定している大きさにしたい。
発生している問題・エラーメッセージ
1,2,キーを離すとオブジェクトが(0, 0, 0)の場所に戻ってしまいます。
3,オブジェクトの初期位置と大きさをInspectorで設定しているのに、スタート後どちらも初期値に戻ってしまう。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Bar : MonoBehaviour 6{ 7 public Transform myTransform; 8 Rigidbody myRigidbody; 9 //中心となるオブジェクト(ゲームオブジェクトじゃなくても中心点がわかればOK) 10 public GameObject centerObj; 11 12 [SerializeField, Header("半径")] 13 float radius; 14 15 [SerializeField, Header("速さ")] 16 float speed; 17 18 float _x; 19 float _y; 20 21 void Start () 22 { 23 myTransform = transform; 24 myRigidbody = GetComponent<Rigidbody>(); 25 //カーソル非表示 26 Cursor.visible = false; 27 } 28 29 // Update is called once per frame 30 void Update () 31 { 32 Move(); 33 Restriction(); 34 } 35 36 void Move() 37 { 38 _x = radius * Mathf.Sin(Time.time * speed); 39 _y = radius * Mathf.Cos(Time.time * speed); 40 //手動で動かせるように 41 gameObject.transform.position = new Vector3(Input.GetAxis("Mouse X") * _x, Input.GetAxis("Mouse X") * _y, 0); 42 //オブジェクトがずっとセンターに向いて動く 43 gameObject.transform.LookAt(centerObj.transform); 44 } 45 46 /// <summary> 47 /// 円形の移動制限 48 /// </summary> 49 void Restriction() 50 { 51 //自身と円形に移動制限させたい位置の中心点との距離を測り半径以上になっていれば処理 52 if (Vector3.Distance(transform.position,centerObj.transform.position) > radius) 53 { 54 //中心点から自身までの方向ベクトルを作る 55 Vector3 nor=transform.position-centerObj.transform.position; 56 //作った方向ベクトルを正規化する 57 nor.Normalize(); 58 //方向ベクトル分半径に移動させる 59 transform.position = nor * radius; 60 } 61 } 62}
###試したこと
gameObject.transform.position = new Vector3(Input.GetAxis("Mouse X") * _x, _y, 0);
と書き換えても見ましたが、Cubeの形はInspectorで設定した大きさになりました。
ですが、挙動がおかしくなります。
補足情報(FW/ツールのバージョンなど)
https://qiita.com/tilyakuda/items/972d248432f45af12433
ここの記事を参考にしています。
unity初心者です。
宜しくおねがいします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。