Hi,
I’m trying to make a first person shooter, but i’m looking at my code thinking it’s just horrible.
I’m currently just using a series of if statements to determine what the player can do in what state. But it just seems really messy and inefficient.
Is there another way anyone would recommend for this kind of logic?
It does work however, I just hate looking at how messy it is.
Thanks
#regionStates
if(!shooting && !reloading)
{
if (Input.GetAxis("Vertical") != 0 || Input.GetAxis("Horizontal") != 0){
if(Input.GetButton("Reload")){
StartCoroutine(Reload ());
return;
}
if(Input.GetButton ("Sprint"))
{
if(Input.GetAxis("Vertical") > 0 && Input.GetAxis("Horizontal") == 0)
{
accuracyState = 2;
playerState = 2;
} else {
accuracyState = 0;
playerState = 1;
}
//Playeriswalking
} else {
if(Input.GetButtonDown("Shoot")){
StartCoroutine(Shoot ());
}
if (Input.GetAxis("Aim") > 0) {
accuracyState = 2;
playerState = 3;
//ifmoving
} else {
accuracyState = 1;
playerState = 1;
}
}
//Ifnotmoving
} else {
if(Input.GetButton("Reload")){
StartCoroutine(Reload ());
return;
}
if(Input.GetButtonDown("Shoot")){
StartCoroutine(Shoot ());
return;
}
if (Input.GetAxis("Aim") > 0) {
accuracyState = 2;
playerState = 3;
//ifmoving
} else {
accuracyState = 0;
playerState = 0;
}
}
switch (playerState) {
case0:
gun.CrossFade ("Pistol_Idle");
Player.Instance.fps.m_MouseLook.XSensitivity = 7;
Player.Instance.fps.m_MouseLook.YSensitivity = 7;
break;
case1:
gun.CrossFade ("Pistol_Walking");
Player.Instance.fps.m_MouseLook.XSensitivity = 7;
Player.Instance.fps.m_MouseLook.YSensitivity = 7;
break;
case2:
gun.CrossFade ("Pistol_Sprint");
Player.Instance.fps.m_MouseLook.XSensitivity = 7;
Player.Instance.fps.m_MouseLook.YSensitivity = 7;
break;
case3:
gun.CrossFade ("Pistol_ADS");
Player.Instance.fps.m_MouseLook.XSensitivity = 4;
Player.Instance.fps.m_MouseLook.YSensitivity = 4;
break;
}
}
#endregion