trouble switching between booleans
Hello I am having some difficulties in having my player object switch between Booleans when a key is pressed. This is the code I have in my Update() function. Trying to make it be able to cycle through the different character outfits when a button is pressed.
if (Input.GetKeyDown (KeyCode.I)) {
if (playerUniform < 2)
{
playerUniform = playerUniform + 1;
}
if (playerUniform >= 3)
{
playerUniform = 0;
}
}
if (playerUniform == 0) {
playerBuster = true;
playerOutfit1 = false;
playerOutfit2 = false;
}
if (playerUniform == 1) {
playerBuster = false;
playerOutfit1 = true;
playerOutfit2 = false;
}
if (playerUniform == 2) {
playerBuster = false;
playerOutfit1 = false;
playerOutfit2 = true;
}
I've also tried coding it like this but no luck.
if (Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.I) && playerUniform == 0)
{
playerUniform = 1;
}
if (Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.I) && playerUniform == 1)
{
playerUniform = 2;
}
if (Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.I) && playerUniform == 2)
{
playerUniform = 0;
}
if (playerUniform == 0) {
playerBuster = true;
playerOutfit1 = false;
playerOutfit2 = false;
}
if (playerUniform == 1) {
playerBuster = false;
playerOutfit1 = true;
playerOutfit2 = false;
}
if (playerUniform == 2) {
playerBuster = false;
playerOutfit1 = false;
playerOutfit2 = true;
}
Answer by robin-theilade · Sep 05, 2015 at 08:27 PM
Your code looks right. Either you're not reading the booleans correctly where you need to make the visual change or you're also changing the booleans somewhere else.
Tip: You can shorten the uniform increment by using modulo liks this playerUniform = (playerUniform + 1) % 3;
. Then it will always be a value between 0 and 2, both inclusive.
Add the whole script and maybe I can be of more help.
using UnityEngine;
public class test : $$anonymous$$onoBehaviour {
public int playerUniform = 0;
public bool playerBuster,playerOutfit1,playerOutfit2;
private bool set$$anonymous$$eOnly()
{
this.playerBuster = (this.playerOutfit1 = (this.playerOutfit2 = false));
return true;
}
void Update(){
if (Input.Get$$anonymous$$eyDown ($$anonymous$$eyCode.I)) {
playerUniform = (playerUniform + 1) % 3;
}
if (playerUniform == 0) {
playerBuster = this.set$$anonymous$$eOnly();
}
if (playerUniform == 1) {
playerOutfit1 = this.set$$anonymous$$eOnly();
}
if (playerUniform == 2) {
playerOutfit2 = this.set$$anonymous$$eOnly();
}
}
}
Just like the script @Positive7 have added, but you need some place where you read the values of the booleans and change the skin/model/texture.
Answer by xylofiso · Sep 06, 2015 at 08:41 PM
Thanks @robin.theilade and @Positive7 the script posted works flawlessly! Now just to figure out those costume changes :D
Your answer
Follow this Question
Related Questions
Other way to write a code 0 Answers
How do I detect if the player specifically is interacting with a trigger? 0 Answers
Unity Update is ignoring the GetKey part of my statement!? 2 Answers
can you set boolean values using the input.getkeydown(keycode.(key)) 1 Answer
Freezing scale of the player 1 Answer