motion *= (Mathf.Abs(inputVec.x) == 1)?.7f:1;
据我所知,这条线意味着变量运动乘以向量inputVec的x部分的绝对值,但我不明白接下来会发生什么。
答案 0 :(得分:3)
如果条件Mathf.Abs(inputVec.x) == 1
为真,则motion
乘以.7f。否则为1。
问号是条件运算符。这是一种编写if else语句的简洁方法。
例如:
if(Mathf.Abs(inputVec.x) == 1)
{
motion *= .7f;
}
else
{
motion *= .5f;
}
相当于:
motion *= (Mathf.Abs(inputVec.x) == 1)?.7f:.5f;
所以你可以写一行代码而不是8行!
答案 1 :(得分:2)
?:
运算符是if
/ else
conditional operator
*=
运算符是x = x * 1
的快捷方式,解释here
Math.Abs()
返回给定值的absolute值
0.7f
- f
是suffix,将值声明为浮动类型
所以..
motion *= (Mathf.Abs(inputVec.x) == 1)?.7f:1;
等于
if (Mathf.Abs(inputVec.x) == 1)) //if inputVec.x equals 1 or -1
{
motion = motion * 0.7;
}
else
{
motion = motion * 1;
}