我正在尝试创建一个带有地图的游戏,可以用鼠标拖动,并且上面有一些可点击的“建筑物”。
所以我知道我需要将相机视口左下角坐标添加到鼠标位置,以调整世界和屏幕坐标。 但我不知道如何做到这一点,例如如何在 on_click / UIMouseEvent 中操作鼠标坐标以及如何不断添加对当前鼠标位置的调整以覆盖悬停事件。
您可以使用数学比例计算小地图/地图之间的坐标。简单的例子:
import arcade
MINIMAP_SIZE = 200
MINIMAP_SCALE = 4
class MiniMap(arcade.Window):
def __init__(self):
super().__init__(width=MINIMAP_SIZE*MINIMAP_SCALE, height=MINIMAP_SIZE*MINIMAP_SCALE)
self.x = 0
self.y = 0
def on_draw(self):
self.clear()
arcade.draw_rectangle_filled(MINIMAP_SIZE/2, MINIMAP_SIZE/2, MINIMAP_SIZE, MINIMAP_SIZE, color=arcade.color.RED)
arcade.draw_point(self.x*MINIMAP_SCALE, self.y*MINIMAP_SCALE, arcade.color.WHITE, 10)
def on_mouse_motion(self, x, y, delta_x, delta_y):
self.x = x
self.y = y
MiniMap()
arcade.run()