我为2D策略游戏编写了一个自制的view_port类.摇摄(箭头键)和缩放(鼠标滚轮)做工精细,但我想的看法也回家向地方光标放置,如谷歌地图或最高指挥官
我会告诉你如何实现缩放的细节,甚至是我正在使用的语言:这都是无关紧要的.重要的是缩放功能,它修改代表视图的矩形结构(x,y,w,h).到目前为止代码看起来像这样:
void zoom(float delta, float mouse_x, float mouse_y)
{
zoom += delta;
view.w = window.w/zoom;
view.h = window.h/zoom;
// view.x = ???
// view.y = ???
}
Run Code Online (Sandbox Code Playgroud)
之前有人建议它,下面将不工作:
view.x = mouse_x - view.w/2;
view.y = mouse_y - view.h/2;
Run Code Online (Sandbox Code Playgroud)
这张照片说明了为什么,当我试图放大笑脸时:

正如您所看到的那样,当鼠标下方的对象放置在屏幕中央时,它停在鼠标下方,所以我们停止向它缩放!
如果你有一个数学头(你需要一个)任何帮助,这将是非常感谢!