3
\$\begingroup\$

I have code here which will change a sprite depending on the variables called gunUpgrade and moveUpgrade. Any way to make the code simpler or shorter? I'm using Unity 3D.

if (gunUpgrade > 0 && moveUpgrade > 0)
 {
 if (gunUpgrade == 1)
 {
 // For every moveupgrade, set the sprite to array number
 if (moveUpgrade == 1) { currentSprite = playerSprites[8]; }
 else if (moveUpgrade == 2) { currentSprite = playerSprites[9]; }
 else if (moveUpgrade == 3) { currentSprite = playerSprites[10]; }
 else if (moveUpgrade == 4) { currentSprite = playerSprites[11]; }
 }
 if (gunUpgrade == 2)
 {
 if (moveUpgrade == 1) { currentSprite = playerSprites[12]; }
 else if (moveUpgrade == 2) { currentSprite = playerSprites[13]; }
 else if (moveUpgrade == 3) { currentSprite = playerSprites[14]; }
 else if (moveUpgrade == 4) { currentSprite = playerSprites[15]; }
 }
 if (gunUpgrade == 3)
 {
 if (moveUpgrade == 1) { currentSprite = playerSprites[16]; }
 else if (moveUpgrade == 2) { currentSprite = playerSprites[17]; }
 else if (moveUpgrade == 3) { currentSprite = playerSprites[18]; }
 else if (moveUpgrade == 4) { currentSprite = playerSprites[19]; }
 }
 }
tim
25.3k3 gold badges31 silver badges76 bronze badges
asked Apr 10, 2016 at 13:53
\$\endgroup\$

2 Answers 2

3
\$\begingroup\$

Use some math.

currentSprite = playerSprites[gunUpgrade*4+4+moveUpgrade-1];
answered Apr 10, 2016 at 14:01
\$\endgroup\$
0
8
\$\begingroup\$

I suggest writing it as

currentSprite = playerSprites[4 * (gunUpgrade + 1) + (moveUpgrade - 1)];

Consider laying out the elements of playerSprites so as to require fewer ±1 operations.

Note that you must ensure that gunUpgrade never exceeds 3, and moveUpgrade never exceeds 4.

answered Apr 10, 2016 at 16:02
\$\endgroup\$
2
  • \$\begingroup\$ Sorry for the lack of a detailed answer but in the end this is the same as I suggested. \$\endgroup\$ Commented Apr 10, 2016 at 16:18
  • 3
    \$\begingroup\$ @BrunoCosta: But he lack of a detailed answer make it so your code is "magic", and you leave a few important details such as the limitation of it, or how to scale it up. \$\endgroup\$ Commented Apr 10, 2016 at 20:27

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.