All of my code is properly working, but when circling my character, the sprite switches 8 times instead of 4 and I can not think of a way to correct this by just adjusting the greater and less thans in my nested if statements.
using UnityEngine;
using System.Collections;
public class SpriteController : MonoBehaviour {
int x = 1;
int caseSwitch = 1;
GameObject fagboy_left;
GameObject fagboy_backleft;
GameObject fagboy_right;
GameObject fagboy_backright;
GameObject Player;
float rise;
float run;
float degreePercent;
// Use this for initialization
void Start ()
{
fagboy_left = GameObject.Find("fagboy_left");
fagboy_backleft = GameObject.Find("fagboy_backleft");
fagboy_right = GameObject.Find("fagboy_right");
fagboy_backright = GameObject.Find("fagboy_backright");
Player = GameObject.Find("FirstPersonCharacter");
}
// Update is called once per frame
void Update ()
{
rise = Player.transform.position.z - transform.position.z;
run = Player.transform.position.x - transform.position.x;
if (run==0)
{
if (run>0)
{
caseSwitch = 1;
}
else
{
caseSwitch = 3;
}
}
degreePercent = (rise / run) * 100;
if (degreePercent<50 && degreePercent>0)
{
caseSwitch = 2;
}
else
{
if (degreePercent<0 && degreePercent>-50)
{
caseSwitch = 1;
}
else
{
if (degreePercent<-50)
{
caseSwitch = 3;
}
else
{
caseSwitch = 4;
}
}
}
switch (caseSwitch)
{
case 1:
fagboy_left.SetActive(true);
fagboy_backleft.SetActive(false);
fagboy_right.SetActive(false);
fagboy_backright.SetActive(false);
break;
case 2:
fagboy_left.SetActive(false);
fagboy_backleft.SetActive(true);
fagboy_right.SetActive(false);
fagboy_backright.SetActive(false);
break;
case 3:
fagboy_left.SetActive(false);
fagboy_backleft.SetActive(false);
fagboy_right.SetActive(true);
fagboy_backright.SetActive(false);
break;
case 4:
fagboy_left.SetActive(false);
fagboy_backleft.SetActive(false);
fagboy_right.SetActive(false);
fagboy_backright.SetActive(true);
break;
}
}
}