Ver.0.3.0.33
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user