Steve-O
Steve-O

Reputation: 53

Scroll texture on Sprite in Unity for background scrolling effect, not working

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

Answers (1)

Fredrik Widerberg
Fredrik Widerberg

Reputation: 3108

You get this warning in the inspector

enter image description here

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

Related Questions