在这里,我正在测试一个int
值是一个整数还是一个十进制值,如果它有一个小数,它会慢慢地添加或减去该值以使其成为一个整数。第一部分和第三部分有效,但第二部分和第四部分没有。
if(ax % tileSize != 0) {
ax -= (ax % tileSize) / 6; // works fine
}
if(ax % tileSize != 0) {
ax += (ax % tileSize) / 6; // doesn't work
}
if(ay % tileSize != 0) {
ay -= (ay % tileSize) / 6; // works fine
}
if(ay % tileSize != 0) {
ay += (ay % tileSize) / 6; // doesn't work
}
每次工作的人数减少了48 / 6
,而其他人则增加了48 / 6
{{1}},但似乎每次更改量都会增加。
答案 0 :(得分:1)
鉴于此作者的评论:
这只是一个Java游戏,我正在测试的是玩家的x 坐标,(ax)和y坐标(ay)符合 瓷砖,因为这是一个基于瓷砖的游戏。如果他们不符合 瓷砖,然后坐标增加或减少,所以你被放置 与瓷砖一致。
这样做的方法就是这样:
double tileSize = 10;
double ax = 25;
double vectorX = Math.floor(ax/tileSize + 0.5) - ax/tileSize;
这将为您提供-1..1范围内的向量,您可以乘以速度或做任何想要决定运动的内容。例如:
ax = ax + Math.ceil(vectorX*speed);
与y轴相同。另外,请注意我的公式中有双打,因此如果需要,可以使用适当的演员表。