現状
ダウンロードしたアセットのオブジェクトの原点がずれているためゲームを始めると中心からずれる
(スクリプトでレーンを作っているのでそれに合わせているのだと思う)
実現したいこと
オブジェクトの原点を中心に変えてゲーム初めても中心からずれないようにしたい
コード
unity
1コード 2public class PlayerCotroller : MonoBehaviour 3{ 4 private Vector3 touchStartPos;//タッチされた位置 5 private Vector3 touchEndPos;//離した位置 6 const int MinLane = -2; 7 const int MaxLane = 2; 8 const float LaneWidth = 1.0f; 9 public float gravity = 10.0f; 10 11 CharacterController controller; 12 13 Vector3 moveDirection = Vector3.zero; 14 int targetLane; 15 16 public float speedX; 17 18 19 // Start is called before the first frame update 20 void Start() 21 { 22 controller = GetComponent<CharacterController>(); 23 } 24 25 // Update is called once per frame 26 void Update() 27 { 28 //フリック入力(スマホ用) 29 Flick(); 30 //PC用 31 if (Input.GetKeyDown("right")) MoveToRight(); 32 if (Input.GetKeyDown("left")) MoveToLeft(); 33 34 //X方向は目的のポジションまでの差分の割合で速度計算 35 float ratioX = (targetLane * LaneWidth - transform.position.x) / LaneWidth; 36 moveDirection.x = ratioX * speedX; 37 38 moveDirection.y -= gravity * Time.deltaTime; 39 40 Vector3 gloabalDirection = transform.TransformDirection(moveDirection); 41 controller.Move(gloabalDirection * Time.deltaTime); 42 } 43 44 void Flick() 45 { 46 if (Input.GetKeyDown(KeyCode.Mouse0))//タップされたとき 47 { 48 touchStartPos = new Vector3(Input.mousePosition.x,//タップ位置 49 Input.mousePosition.y, Input.mousePosition.z); 50 } 51 if (Input.GetKeyUp(KeyCode.Mouse0))//離されたとき 52 { 53 touchEndPos = new Vector3(Input.mousePosition.x, 54 Input.mousePosition.y, Input.mousePosition.z);//離した位置 55 GetDirection(); 56 } 57 } 58 59 void GetDirection() 60 { 61 float directionX = touchEndPos.x - touchStartPos.x;//x距離 62 float directionY = touchEndPos.y - touchStartPos.y;//y距離 63 string Direction; 64 65 if (Mathf.Abs(directionY) < Mathf.Abs(directionX)) 66 { 67 if (30 < directionX) 68 { 69 //右フリック 70 Direction = "right"; 71 } else if (-30 > directionX) 72 { 73 //左フリック 74 Direction = "left"; 75 } 76 else 77 { 78 //タッチ 79 Direction = "touch"; 80 } 81 82 switch (Direction) 83 { 84 case "right": 85 MoveToRight(); 86 break; 87 case "left": 88 MoveToLeft(); 89 break; 90 case "touch": 91 break; 92 } 93 } 94 } 95 public void MoveToRight() 96 { 97 if (controller.isGrounded && targetLane < MaxLane) targetLane+=2; 98 } 99 public void MoveToLeft() 100 { 101 if (controller.isGrounded && targetLane > MinLane) targetLane-=2; 102 } 103}
スクショとかあります?
どのようなズレですか?
スクショがなぜか入れれないのですが
キャラがいて右前のほうにピボットがある感じです
そのキャラの親子関係を見て頂けますか?
GameObject(親)
L キャラ
になっていたらそれが原因のような気がします.
車なのですが子はタイヤで本体の車体を見てもLキャラとはわからないです
車の一番上の親は車体ですか?
ねっとではぶれんだーに入れて治すと書いてたのですがunity側ではpivotの位置は変えれないんでしょうか
上が車体子がタイヤです
1.ブレンダーでオブジェクトを中心に動かす.
2.新しい空のオブジェクト(Create Empty)を作り,それに車を入れて空のオブジェクトの中心に合うように車の位置をかえて,今までの車体を空のオブジェクトにかえる.
のどっちかで出来ると思います.
2番目のを最初に試したのですがキャラクターコントローラと上記のスクリプトを空のオブジェクトにアタッチすると車が動かなかったんです
空に入れて車にアタッチするとまたずれてしまいました
回答1件
あなたの回答
tips
プレビュー