所以我有2布尔的“FacingRight”和“FacingLeft”他们不工作,因为我想和我想到一个更好的主意,但完全不知道如何去做。如何让BOOL成为真或假,基于浮动增加或减少
如果游戏对象(玩家)的X位置值增加,我想使FacingRight = true和FacingLeft = false,这意味着当X值减少时,它向右移动,FacingRight = false和FacingLeft = true。
任何帮助将不胜感激。
这是我目前的代码,如果有帮助。
public float fireAnimDelay;
Animator anim;
public bool FacingRight = false;
public bool FacingLeft = false;
// Use this for initialization
void Awake()
{
anim = GetComponent<Animator>();
anim.GetFloat("Speed");
}
// Update is called once per frame
void Update()
{
if (anim.GetFloat("Speed") >= 0.1f) // If speed is positive you are facing right
{
FacingRight = true;
Debug.Log("FacingRight");
}
if (anim.GetFloat("Speed") <= -0.1f) // if speed is negative you are facing left
{
FacingLeft = true;
}
if (anim.GetFloat("Speed") == 0.0f) // if speed is 0 you are idle
{
FacingRight = false;
FacingLeft = false;
}
if (Input.GetKey(KeyCode.Z) && FacingRight == true)
{
FacingLeft = false;
anim.SetBool("Firing", true);
anim.SetBool("FacingRight", true);
anim.SetBool("FacingLeft", false);
StartCoroutine(FireDelay());
}
if (Input.GetKey(KeyCode.Z) && FacingLeft == true)
{
FacingRight = true;
anim.SetBool("Firing", true);
anim.SetBool("FacingLeft", true);
anim.SetBool("FacingRight", false);
StartCoroutine(FireDelay());
}
}
IEnumerator FireDelay()
{
yield return new WaitForSeconds(fireAnimDelay);
anim.SetBool("Firing", false);
}
我对C#和Unity非常陌生,所以在这里有很多东西我没有得到,如果有人可以进一步打破这个对我来说这将是可怕的。 – OmBiEaTeR
我也会在此期间进行研究,并希望能够这样工作 – OmBiEaTeR
@OmBiEaTeR用最简单的话来说,你需要的是一个事件。 '当C#中的一个事件是当一个对象发生一些有趣的事情(变化)时,一个类给这个类的客户端提供通知的方法' – Transcendent