前提・実現したいこと
プログラミング初心者です。
初めてUnityで2Dゲームを制作中です。
キャラクターが右方向に無限に進むランゲームを作っています。
そこで2Dの背景をスプライト2枚を使って、右方向に無限に生成(追尾)させることには成功しました。
同じ方法で3Dの地面を右方向に無限に生成(追尾)させようとしたところ、上手くいきませんでした。
発生している問題・エラーメッセージ
GetComponent<SpriteRenderer>().bounds.size.x;から取得していた幅を、 this.transform.position.x;で取得し、それ以外は同じコードで実行したところ、4倍くらい右方向に生成されてしまいます。 原因がわかりません。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class GroundController : MonoBehaviour 6{ 7 int spriteCount = 2; 8 float leftOffset = -1f; 9 Transform bgTfm; 10 float width; 11 12 void Start() 13 { 14 bgTfm = transform; 15 width = this.transform.position.x; 16 } 17 18 19 void Update() 20 { 21 Vector3 myViewport = Camera.main.WorldToViewportPoint(bgTfm.position); 22 23 if (myViewport.x < leftOffset) 24 { 25 bgTfm.position += Vector3.right * (width * spriteCount); 26 } 27 } 28}
試したこと
Update関数に入ったところでブレークポイントを貼ると正しい値が入っているのですが、
Update関数のif文を抜けたところに貼ると、widthが0になっています…
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。