所以,我正在进行一场2d塔防游戏,只要他们改变方向就需要敌人的精灵旋转。我知道这可以使用内置的java旋转/仿射变换方法轻松完成,但为了优化/性能,我想知道是否可以用像素数组进行旋转。
感谢
答案 0 :(得分:0)
盖洛德, 我不确定你是否还在这里寻找答案,但为了其他成员,这里是我能用来解决类似问题的方法。我一直在构建一个游戏引擎,它使用与您描述的类似的图形结构。我使用的旋转功能是这样的: 所有浮标都可以被双打替换,也许更好。我使用浮动来帮助降低计算机的性能。
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代码不完整但它应该是可以理解的。如果有人需要澄清,只需评论并询问。