我有一堆具有以下属性的对象:
xPos = x coordinate of position in world
yPos = y coordinate of position in world
size = size of object
我有一个将这些对象绘制到屏幕上的功能。屏幕具有x偏移和y偏移,因此用户可以平移并且对象将根据需要在屏幕上移动和关闭。这一切都很完美。现在我想添加放大和缩小功能,但我无法弄清楚如何将缩放应用到位置。
render(int xOff, int yOff, int zoom){
int x = xPos + xOff;
int y = yPos + yOff;
s->addRenderJob(texID, x, y, size * zoom, size * zoom);
}
缩放对象的大小很简单,但如何通过缩放修改x和y位置,以便对象之间的距离也乘以缩放?
答案 0 :(得分:0)
render(int xOff, int yOff, int zoom){
int x = xPos + xOff;
int y = yPos + yOff;
s->addRenderJob(texID, x* zoom, y* zoom, size * zoom, size * zoom);
}
如有必要,您可以下载游戏引擎。 研究如何处理游戏中的坐标系。
答案 1 :(得分:0)
halfX = SCREEN_WIDTH/2
halfY = SCREEN_HEIGHT/2
deltaX = xPos - halfX;
deltaY = yPos - halfY;
x = halfX + deltaX * zoom + xOff;
y = halfY + deltaY * zoom + yOff;
感谢VermillionAzure帮助我解决这个问题。