61 lines
2.0 KiB
C#
61 lines
2.0 KiB
C#
using UnityEngine;
|
|
|
|
namespace AibisDream.Kit
|
|
{
|
|
public class RepeatTrack : MonoBehaviour
|
|
{
|
|
public Sprite sprite;
|
|
public float width;
|
|
public float moveSpeed;
|
|
|
|
private SpriteRenderer _renderer1;
|
|
private SpriteRenderer _renderer2;
|
|
|
|
private void Start()
|
|
{
|
|
_renderer1 = GeneNewRenderer();
|
|
_renderer1.transform.localPosition = Vector3.zero;
|
|
}
|
|
|
|
private SpriteRenderer GeneNewRenderer()
|
|
{
|
|
var newRenderer = new GameObject().AddComponent<SpriteRenderer>();
|
|
newRenderer.sprite = sprite;
|
|
newRenderer.transform.SetParent(transform);
|
|
newRenderer.sortingOrder = 5;
|
|
newRenderer.sortingLayerName = "FixMiddle";
|
|
newRenderer.maskInteraction = SpriteMaskInteraction.VisibleInsideMask;
|
|
|
|
return newRenderer;
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
// Debug.Log("render" + _renderer1);
|
|
// Debug.Log("bounds" + _renderer1.bounds);
|
|
// Debug.Log("size" + _renderer1.bounds.size);
|
|
var spriteWidth = _renderer1.bounds.size.x;
|
|
if (-_renderer1.transform.localPosition.x + width > spriteWidth && !_renderer2)
|
|
{
|
|
// 可以新建下一个了
|
|
_renderer2 = GeneNewRenderer();
|
|
_renderer2.transform.localPosition = new Vector3(width, 0, 0);
|
|
}
|
|
|
|
if (-_renderer1.transform.localPosition.x > spriteWidth)
|
|
{
|
|
Destroy(_renderer1.gameObject);
|
|
_renderer1 = _renderer2;
|
|
_renderer2 = null;
|
|
}
|
|
|
|
_renderer1.transform.localPosition =
|
|
new Vector3(_renderer1.transform.localPosition.x + moveSpeed * Time.deltaTime, 0, 0);
|
|
if (_renderer2)
|
|
{
|
|
_renderer2.transform.localPosition =
|
|
new Vector3(_renderer2.transform.localPosition.x + moveSpeed * Time.deltaTime, 0, 0);
|
|
}
|
|
}
|
|
}
|
|
} |