局部尺度翻转的奇怪行为

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 属性.

时,您仍然会看到它