用简单的语言 - 如果脚本的这部分检测到方向是“正确的”并且两个布尔“Wallright”和“WallsLeftOrRight”都是假的,那么播放标准步行动画并移动精灵...
这部分工作正常,这是我遇到问题的下一部分。
在我看来,逻辑听起来是可行的 - 如果方向是正确的,任何一个布尔都是真的,而不是播放空闲动画。
在实践中,游戏要求两个布尔都是真的,这意味着|运营商要求他们都是真的。我试过切换到逻辑||运营商自|似乎不是出于这种性质的条件,但没有做任何事情。我也尝试从他们自己的括号封装中删除两个OR值,但这也不起作用。
if ((direction == "right") && ((WallRight == false) | (WallsLeftOrRight == false)))
{
var newanim = character.GetComponent<Animator>();
newanim.Play("right_walking");
character.transform.position += Vector3.right * 0.6f * Time.deltaTime;
charDirection = PlayerFacing.Right;
}
else if ((direction == "right") && ((WallRight == true) | (WallsLeftOrRight == true)))
{
var newanim = character.GetComponent<Animator>();
newanim.Play("right_idle");
charDirection = PlayerFacing.Right;
}
答案 0 :(得分:0)
首先,简化您的代码。
if(WallRight == false)
与if(!WallRight)
if(WallRight == true)
与if(WallRight)
回答你的问题:
如果脚本的这一部分检测到方向是“正确的” 然后两个布尔“Wallright”和“WallsLeftOrRight”都是假的 播放标准的步行动画
if (direction == "right" && !WallRight && !WallsLeftOrRight)
如果方向正确并且任何一个布尔都是真的 播放空闲动画。
if ((direction == "right") && (WallRight || WallsLeftOrRight))
首先,检查方向,然后||
用于检查WallRight
或WallsLeftOrRight
是否为真。如您所见,WallRight
和WallsLeftOrRight
放在同一个括号中。检查将为他们完成一次。
if (direction == "right" && !WallRight && !WallsLeftOrRight)
{
var newanim = character.GetComponent<Animator>();
newanim.Play("right_walking");
character.transform.position += Vector3.right * 0.6f * Time.deltaTime;
charDirection = PlayerFacing.Right;
}
else if ((direction == "right") && (WallRight || WallsLeftOrRight))
{
var newanim = character.GetComponent<Animator>();
newanim.Play("right_idle");
charDirection = PlayerFacing.Right;
}
答案 1 :(得分:0)
第一个条件:
(direction == "right") && ((WallRight == false) | (WallsLeftOrRight == false))
第二个条件:
(direction == "right") && ((WallRight == true) | (WallsLeftOrRight == true))
在第一个条件中,您检查WallRight
或WallsLeftOrRight
是否为假
这种情况可以为这三种情况带来真正的结果:
WallRight = false
,WallsLeftOrRight = false
WallRight = false
,WallsLeftOrRight = true
WallRight = true
,WallsLeftOrRight = false
然后在else if
子句中检查的唯一剩余情况是:
WallRight = true
,WallsLeftOrRight = true
您正在使用else if
子句来检查第二个条件,因此当第一个条件为真时,无法检查第二个条件。