0

因此,我正在开发一款 2d 塔防游戏,并且需要敌人的精灵在他们改变方向时旋转。我知道这可以使用内置的 java 旋转/仿射变换方法轻松完成,但为了优化/性能,我想知道是否可以使用像素数组进行旋转。

谢谢

4

1 回答 1

0

GayLord,我不确定你是否还在在这里寻找答案,但为了其他成员,这是我能够用来解决类似问题的方法。我一直在构建一个游戏引擎,它使用与您所描述的类似的图形结构。我使用的旋转函数是这样的:所有的浮点数都可以替换为双精度浮点数,并且效果可能更好。我使用浮点数来帮助提高低端计算机的性能。

float cos = (float)Math.cos(-angle);//The angle you are rotating (in radians) 
float sin = (float)Math.sin(-angle);//The angle you are rotating (in radians) 
float sWidth = screenWidth/2;
float sHeight = screenHeight/2;
float pWidth = pixelArrayWidth/2;
float pHeight = pixelArrayHeight/2;

for each pixel in screen{
    int xPosition = pixelIndexX - sWidth;
    int yPosition = pixelIndexY - sHeight;
    int tx = (int)(xPosition  * cos - yPosition  * sin);
    int ty = (int)(xPosition  * sin + yPosition  * cos);
    xPosition = tx + pWidth;
    yPosition = ty + pHeight;
    if((xPosition is out of bounds) or (yPosition is out of bounds)) continue;
    setPixelAt(screenPixelX, screenPixelY, pixelArray[xPosition + yPosition * pixelArrayWidth] )  
}

我知道它与伪代码和 Java 代码不一致,但它应该是可以理解的。如果有人需要澄清,请发表评论并询问。

于 2017-05-06T02:49:29.300 回答