- Home /
Question by
DedValve · Nov 21, 2014 at 05:52 AM ·
sprite renderer
Trying to use Sprite Renderer to swap between 2 sprites
I'm trying to get a sprite to toggle between its on and off sprite (a ball that shoots a laser and a ball that doesn't shoot a laser) at random intervals.
The problem is I don't know how to get past sprite renderer. The problem is in my fixedupdate code.
var interval: float = 0.5f; //random time to turn off and on each laser generated
var rotationSpeed: float = 0.0f; //makes lasers rotate
var isLaserOn: boolean = true; //tests if our laser is on
var timeUntilNextToggle: float; //time to toggle to the next on/off state
function Start ()
{
timeUntilNextToggle = interval; //will set the time until the laser will toggle its state for the first time
}
//function Update ()
function FixedUpdate ()
{
//Decreases time until next toggle
timeUntilNextToggle -= Time.fixedDeltaTime;
//If time is 0 or less then the laser will toggle states
if (timeUntilNextToggle <= 0)
{
//sets the correct state of the laser
isLaserOn = !isLaserOn;
//if our laser is on the collider is activated, if it is off then there is no collider to interfere with the player
collider2D.enabled = isLaserOn;
//will switch between our two sprite images
// SpriteRenderer.sprite = ((SpriteRenderer)this.renderer);
var newSprite : Sprite;
GetComponent(SpriteRenderer).sprite = newSprite;
if (isLaserOn)
spriteRenderer.sprite = laserOnSprite;
else
spriteRenderer.sprite = laserOffSprite;
//resets time until next toggle variable since it has just been toggled
timeUntilNextToggle = interval;
}
//rotates our lasers around the z axis (set rotationspeed to 0 to disable in the inspector)
transform.RotateAround(transform.position, Vector3.forward, rotationSpeed * Time. fixedDeltaTime);
}
Comment
Answer by Uldeim · Nov 21, 2014 at 06:07 AM
I suspect it to be a very simple fix, not changing your code too much:
// This isn't doing anything, but it's the right idea.
//GetComponent(SpriteRenderer).sprite = newSprite;
if (isLaserOn)
GetComponent(SpriteRenderer).sprite = laserOnSprite;
else
GetComponent(SpriteRenderer).sprite = laserOffSprite;
That said, I could be wrong, since "I don't know how to get past sprite renderer" isn't a great way to describe the issue. In the future, try to describe the problem such that we can duplicate or observe it ourselves... "this code won't compile", "the sprite doesn't change", "the computer explodes in my face".
Your answer
