【发布时间】:2014-04-18 02:49:49
【问题描述】:
在我的基于图块的游戏中,世界被分割成 32x32 的图块块。它们跨越所有方向,因此在零以下的位置有块。平铺图像被绘制到附加到每个块的 1024x1024 纹理 2D 上。我需要能够正确使用带负坐标的模数,以基本上将游戏世界坐标转换为纹理上的坐标。
以下不起作用,如果坐标是负数,坐标显然会被反转。 (即 (-32, -32) 将是 (-32, -32) 而不是 (992, 992))
public int mod(int num)
{
//Mods a pixel position to fit in a chunk texture
return Math.Abs(num % 1024);
}
我该怎么办?我需要一些有用的东西。
我也试过这个:
public int mod(int num)
{
//Mods a pixel position to fit in a chunk texture
if (num < 0)
return (num % 1024) + 1024;
else
if (num >= 0)
return num % 1024;
else return -1;
}
...这消除了反转问题,但是如果坐标是-1024或类似的,它会在模数处变为0并最终为1024,这超出了纹理的范围...
【问题讨论】:
标签: c# xna coordinates modulo