【发布时间】:2019-08-28 21:42:22
【问题描述】:
当我搜索对齐网格功能时。实际上是 Tile Collide。(你可能知道我因为标签而学习 GMS2..)
这对我的问题并不重要。
切入正题,我知道了这个公式。
pos.x - (pos.x % gridwidth) <- this is number calculation.
我想要的效果很好。我发现了不同的公式。
这个公式适用于 obj 和瓦片的碰撞。
(pos.x)&~(gridwidth-1) <- this is binary calculation.
它有同样的工作。发生什么事??我无法理解这些公式是如何转换的..
其实我知道 '&' 与减法有相同的作用。 但我不理解其他人。
例如
var f1,f2;
var pos_x = 102;
var gridwidth = 64; // It must be even power of 2.
f1 = pos_x - (pos_x % gridwidth);
f2 = (pos_x)&(~(gridwidth-1));
【问题讨论】:
-
为什么python和c#标签同时出现?这是什么语言?
-
GML 是 GameMaker Studio2 的脚本语言,我认为 GML 基于 Python ......只是我的猜测。如果你对此感到困惑,我很抱歉。我删除了 C# 标签,因为它很混乱。
-
网格宽度必须是 2 的偶数幂吗?这是我认为第二个公式有意义的唯一方法。 - 如果是这样,那么这两个都“捕捉”到二的偶数幂的倍数,二的偶数幂是
gridwidth。 -
为 pos.x 和 gridwidth 提供潜在值?因为这两个公式根本不等价。例如,10 和 3
x - (x % gridwidth) #9和(x)&~(gridwidth-1) #8 -
哦,我明白了。我添加了一个示例。
标签: gml game-maker-language game-maker-studio-2