局部尺度翻转的奇怪行为
Weird behavior from local scale flip
我目前正在开发一款带有精灵和类似内容的 2D 游戏。
当我尝试通过代码翻转精灵时,我发现了一些非常奇怪的东西,这是代码:
Vector3 theScale = transform.localScale;
theScale.x = isMovingLeft ? 1 : -1;
transform.localScale = theScale;
// Same code but in one line
//transform.localScale = Vector3.right * (isMovingLeft ? 1 : -1);
基本上,当精灵到达 waypoints 列表的末尾时,它只是翻转到相反的方向。
但是,如果我使用上面代码中注释的一行,精灵就会消失(但在检查器中继续正常翻转),如果我使用三行代码(带有局部变量),精灵就会工作完美。
有人知道为什么会这样吗?是错误还是 reference/value 问题?
谢谢:)
Vector3.right
将是 0,0,1。所以只有 one 维度实际上有一个大小(因为其余的都乘以 0)。它有点 "squished" 什么都没有。
在您当前未注释的代码中,您实际上使用了 localScale
。我假设 .y
和 .z
属性 将是非零的。因此,当您反转 .x
属性.
时,您仍然会看到它
我目前正在开发一款带有精灵和类似内容的 2D 游戏。
当我尝试通过代码翻转精灵时,我发现了一些非常奇怪的东西,这是代码:
Vector3 theScale = transform.localScale;
theScale.x = isMovingLeft ? 1 : -1;
transform.localScale = theScale;
// Same code but in one line
//transform.localScale = Vector3.right * (isMovingLeft ? 1 : -1);
基本上,当精灵到达 waypoints 列表的末尾时,它只是翻转到相反的方向。
但是,如果我使用上面代码中注释的一行,精灵就会消失(但在检查器中继续正常翻转),如果我使用三行代码(带有局部变量),精灵就会工作完美。
有人知道为什么会这样吗?是错误还是 reference/value 问题?
谢谢:)
Vector3.right
将是 0,0,1。所以只有 one 维度实际上有一个大小(因为其余的都乘以 0)。它有点 "squished" 什么都没有。
在您当前未注释的代码中,您实际上使用了 localScale
。我假设 .y
和 .z
属性 将是非零的。因此,当您反转 .x
属性.