前提・実現したいこと
今、unity2Dでゲーム制作を行っています。その中に回転するオブジェクト(観覧車のようなギミック)があるのですが、その上にキャラクターであるユニティーちゃんが乗るとスケールが横に大きくなって地面から少し浮いてしまいます。(ギミックはtransformを使用して動かしています)サイトを参考に足場オブジェクトの子要素にする方法を試し、キャラクターが床の上に滑らず乗る事はできたのですが、キャラの大きさが変わってしまう所が困っています。
その他にも、キャラクターにカメラが追尾する処理を行っているのですが、ギミックの上にキャラクターが乗ると走る速さが早くなり、追尾処理が追いついていないような感じになっています。アドバイス、解決策を教えていただけると嬉しいです。
参考にしたサイト http://hiyotama.hatenablog.com/entry/2015/06/12/153523
https://tech.pjin.jp/blog/2016/12/06/unity_skill_6/#i
発生している問題・エラーメッセージ
発生している問題 観覧車ギミックの上に乗るとキャラの大きさと走るスピードが変わる。 追尾するカメラが追い付かなく、ワープして追尾しているように見える。
該当のソースコード
C#
1観覧車ギミックの足場 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class MerryGorand_ugokudai : MonoBehaviour { 7 8 // Use this for initialization 9 void Start () { 10 11 } 12 13 // Update is called once per frame 14 void Update () { 15 transform.Rotate(0, 0, -0.5f); 16 } 17} 18
C#
1観覧車ギミックの中央の柱 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class merryGorand_hasira : MonoBehaviour { 7 8 // Use this for initialization 9 void Start () { 10 11 } 12 13 // Update is called once per frame 14 void Update () { 15 transform.Rotate(0, 0, 0.5f); // Z軸で1度回転 16 } 17} 18
C#
1足場オブジェクトの子要素にするスクリプト 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class Synchronization : MonoBehaviour { 7 8 void OnCollisionEnter2D(Collision2D col) 9 { 10 if (col.gameObject.tag == "MoveFloor") 11 { 12 transform.SetParent(col.transform); 13 } 14 } 15 16 void OnCollisionExit2D(Collision2D col) 17 { 18 if (col.gameObject.tag == "MoveFloor") 19 { 20 transform.SetParent(null); 21 } 22 } 23}
C#
1カメラを追尾させるスクリプト(必要なところだけを抜粋) 2public GameObject mainCamera; 3 4if (transform.position.x > mainCamera.transform.position.x - 4) { 5 Vector3 cameraPos = mainCamera.transform.position; 6 cameraPos.x = transform.position.x + 4; 7 mainCamera.transform.position = cameraPos; 8 } 9 Vector2 min = Camera.main.ViewportToWorldPoint(new Vector2(0, 0)); 10 Vector2 max = Camera.main.ViewportToWorldPoint(new Vector2(1, 1)); 11 Vector2 pos = transform.position; 12 pos.x = Mathf.Clamp(pos.x, min.x + 0.5f, max.x); 13 transform.position = pos;
試したこと
キャラクターの大きさが変わる原因について調べた。
補足情報(FW/ツールのバージョンなど)
unity
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー