我正在用 Pygame 写一个小海盗游戏。如果你在《帝国全面战争》中玩过海战,你就会知道我想要实现的目标:
船的精灵在 position (x1|y1)
。玩家现在点击(x2|y2)
屏幕上的位置。精灵现在应该(x2|y2)
作为它的新位置 - 一步一步地去那里,而不是立即在那里发光。
我发现它与矩形(x1|y1)
的对角线有关任何一个(运送或点击)可能比另一个更大或更小。(x1|y2)
(x2|y2)
(x2|y1)
x
y
这个小片段是我最后一次尝试编写一个工作函数:
def update(self, new_x, new_y, speed, screen, clicked):
if clicked:
self.xshift = (self.x - new_x)
self.yshift = ((self.y - new_y) / (self.x - new_x))
if self.x > (new_x + 10):
self.x -= 1
self.y -= self.yshift
elif self.x > new_x and self.x < (new_x + 10):
self.x -= 1
self.y -= self.yshift
elif self.x < (new_x - 10):
self.x += 1
self.y += self.yshift
elif self.x < new_x and self.x < (new_x - 10):
self.x += 1
self.y += self.yshift
else:
self.x += 0
self.y += 0
screen.set_at((self.x, self.y), (255, 0, 255))
“船”在这里只是一个粉红色的像素。它在我点击屏幕时显示的反应是粗略地朝着我的点击移动,但在我点击的点的看似随机的距离处停止。
变量是:
new_x
, new_y
= 鼠标点击的位置
speed
= 恒定的速度取决于船的类型
clicked
=true
由MOUSEBUTTONDOWN
事件设置,以确保 self 的 xshift 和 yshift 仅在玩家点击时定义,而不是每帧再次定义。
如何让飞船从当前位置平稳移动到玩家点击的位置?