你确定它也不会发生在右后方向吗?我认为这可能与 Godot 如何处理算术顺序有关。例如,如果 Godot 在除法之前进行乘法(就像我认为的那样),那么假设我们使用整个值(1 或 -1),那么 Godot 会以这种方式处理代码中的第一个 Vector3 坐标:
Using - (MoveDirection.x - (MoveDirection.z / 2 * MoveDirection.x)
Substitute values for - (x,z)
FOR VALUES (1 , -1)
(1) - (-1 / (2 * 1))
(1) - (-1) / (2)
(1) - (-0.5)
= 1.5 <<<<<<----------- THIS IS YOUR PROBLEM (I THINK)
FOR VALUES (-1, 1)
(-1) - (1 / (2 * -1))
(-1) - (1) / (-2)
(-1) - (-0.5)
= -0.5
FOR VALUES (1 , 1)
(1) - (1 / (2 * 1))
(1) - (1) / (2)
(1) - (0.5)
= 0.5
FOR VALUES (-1, -1)
(-1) - (-1 / (2 * -1))
(-1) - (-1) / (-2)
(-1) - (0.5)
= -1.5 <<<<<<----------- THIS SHOULD ALSO BE A PROBLEM (I THINK)
如果我的数学错了,请原谅我,我现在是早上 5:00。如果我错了,请告诉我,我会删除这个答案。
编辑:事实证明算术顺序甚至无关紧要,它首先用除法做同样的事情。我的建议是找到一种方法从受影响的结果中减去 1(或加 1)。可能是这样的:if (MoveDirection.x > 0) AND (MoveDirection.z < 0)
,从结果中减去 1。