Skip to content

Instantly share code, notes, and snippets.

@unity3dcollege
Created August 10, 2017 21:51
Show Gist options
  • Save unity3dcollege/19b438240f253d608253680d71d69f60 to your computer and use it in GitHub Desktop.
Save unity3dcollege/19b438240f253d608253680d71d69f60 to your computer and use it in GitHub Desktop.
using UnityEngine;
public class SpriteScroll : MonoBehaviour
{
[SerializeField]
private float scrollSpeed = 1f;
private float rightEdge;
private float leftEdge;
private Vector3 distanceBetweenEdges;
private void Start()
{
CalculateEdges();
distanceBetweenEdges = new Vector3(rightEdge - leftEdge, 0f, 0f);
}
private void CalculateEdges()
{
var spriteRenderer = GetComponent<SpriteRenderer>();
rightEdge = transform.position.x + spriteRenderer.bounds.extents.x / 3f;
leftEdge = transform.position.x - spriteRenderer.bounds.extents.x / 3f;
}
private void Update()
{
transform.localPosition += scrollSpeed * Vector3.right * Time.deltaTime;
if (PassedEdge())
{
MoveRightSpriteToOppositeEdge();
}
}
private bool PassedEdge()
{
return scrollSpeed > 0 && transform.position.x > rightEdge ||
scrollSpeed < 0 && transform.position.x < leftEdge;
}
private void MoveRightSpriteToOppositeEdge()
{
if (scrollSpeed > 0)
transform.position -= distanceBetweenEdges;
else
transform.position += distanceBetweenEdges;
}
private void OnDrawGizmos()
{
if (Application.isPlaying)
{
Gizmos.DrawCube(new Vector3(rightEdge, 0f, 0f), new Vector3(0.1f, 2f, 0.1f));
Gizmos.DrawCube(new Vector3(leftEdge, 0f, 0f), new Vector3(0.1f, 2f, 0.1f));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment