Changing sprites of a 2D object in C#, Can't figure it out!
I'm trying to make a simple day/night transparent filter, first I get the feeling that I'm using an ineffective and long code, secondly the only change that happens is when sec = 0, I can't figure out why, help is appreciated.
float sec = 45f;
float valueToIncreaseEverySec = 1;
float min = 0;
public Sprite n1;
public Sprite n2;
public Sprite n3;
public Sprite n4;
public Sprite n5;
SpriteRenderer sr;
void Start ()
{
sr = GetComponent<SpriteRenderer> ();
}
void Update()
{
sec += valueToIncreaseEverySec * Time.deltaTime;
print (sec);
if (sec >= 60) {
min++;
sec = 0;
print (min);
}
if (sec == 50f) {
sr.sprite = n1;
}
if (sec == 52.5f) {
sr.sprite = n2;
}
if (sec == 55f) {
sr.sprite = n3;
}
if (sec == 57.5f) {
sr.sprite = n4;
}
if (sec == 0f) {
sr.sprite = n5;
}
if (sec == 2.5f) {
sr.sprite = n4;
}
if (sec == 5f) {
sr.sprite = n3;
}
if (sec == 7.5f) {
sr.sprite = n2;
}
if (sec == 10f) {
sr.sprite = n1;
}
if (sec == 12.5f) {
sr.sprite = null;
}
Comment
Best Answer
Answer by dan_wipf · Mar 22, 2019 at 09:50 PM
well sec will never be accurate, so that you can compare if(sec == 52.5){//soemthing happens}
a way to go is to give it a range, where it’d be a valid range where the sprite can be displayed like this:
if(sec >= 0 && sec < 5){
sprite = sprite1;}
if(sec >= 5 && sec < 12.3f){
sprite = sprite2;}
//pseudo code
// this is just for getting you an idea what i mean
Your answer
Follow this Question
Related Questions
How can I have multiple sprite objects turned into one sprite object 0 Answers
Player rotation 2d 0 Answers
Get horizontal velocity of an object 2 Answers
Random object and random sprites? 1 Answer
cut out face from sprite using camera 0 Answers