Reputation: 53
I've been trying to achieve a scrolling background effect using a Sprite in a 2D Unity project.
I've seen this code being used on 3D objects with a MeshRenderer to achieve the effect but this does not seem to work on a Sprite with SpriteRenderer. Does anybody know why?
public class ScrollingTexture : MonoBehaviour {
public float ScrollSpeed = -0.5f;
private Vector2 _savedOffset;
private Renderer _renderer;
private void Start ()
{
_renderer = GetComponent<Renderer>();
_savedOffset = _renderer.material.mainTextureOffset;
}
private void Update()
{
float x = Mathf.Repeat (Time.time * ScrollSpeed, 1);
Vector2 offset = new Vector2(x, _savedOffset.y);
_renderer.material.mainTextureOffset = offset;
}
private void OnDisable()
{
_renderer.material.mainTextureOffset = _savedOffset;
}
}
UPDATE: To get it to work properly I have added a new material as suggested and set its shader to Unlit/Transparent. I also had to make sure the Sprite itself had its Wrap Mode set to Repeat. I did not fix the Inspector Warning yet.
Upvotes: 2
Views: 5613
Reputation: 3108
You get this warning in the inspector
I managed to get it scrolling by just creating a New Material and assigning it to the GameObject, then changing the Shader to Sprites/Diffuse.
Upvotes: 4