【发布时间】:2019-03-05 03:23:05
【问题描述】:
我正在 Processing 中制作一个小游戏。但我不知道如何在使用全屏的每种显示器类型上将坐标设置为相同。就像在大显示器中,坐标与小显示器不同。
我试图将中心平移到屏幕中间!
谁能帮帮我?
【问题讨论】:
-
请尝试更具体一些 - 显示代码 sn-ps 等。否则,将无法回答您的问题。
标签: height width processing fullscreen
我正在 Processing 中制作一个小游戏。但我不知道如何在使用全屏的每种显示器类型上将坐标设置为相同。就像在大显示器中,坐标与小显示器不同。
我试图将中心平移到屏幕中间!
谁能帮帮我?
【问题讨论】:
标签: height width processing fullscreen
听起来你使用的是绝对坐标,像这样:
void setup(){
size(500, 500);
}
void draw(){
ellipse(250, 250, 400, 400);
}
这段代码在屏幕中间画了一个大圆圈。问题是,这段代码根本没有考虑窗口的大小。因此,如果您将其设为全屏,则圆圈将保持相同的大小和位置。
相反,您可以使用width 和height 变量使您的绘图随窗口缩放:
void setup(){
size(500, 500);
}
void draw(){
ellipse(width / 2, height / 2, width * .8, height * .8);
}
现在绘图将随窗口大小缩放。
但是,现在您遇到了一个不同的问题:绘图可能会根据显示器的大小而被拉长。您需要修复纵横比。我建议使用谷歌搜索查看大量方法,但对于这个简单的示例,您可以取 width 和 height 中的最小值并使用它:
void setup() {
fullScreen();
}
void draw() {
float minDimension = min(width, height);
ellipse(width / 2, height / 2, minDimension * .8, minDimension * .8);
}
还有很多其他方法可以解决这个问题。您还可以考虑使用始终相同大小的PGraphics,然后根据屏幕大小进行缩放。
【讨论】: