我是游戏的一部分。它运行良好,但我想添加敌人在我的游戏。到目前为止,我在pygame精灵中添加了敌人的图像。但是我如何让敌人跟着玩家?我试过这么做,但它只是让敌人的形象直接指向玩家:
def moveEnemy(self):
enemies.rect.x = player.rect.x
enemies.rect.y = player.rect.y
all_sprites_list.add(enemies)
enemies_list.add(enemies)
我以为这会让敌人的形象跟随玩家。相反,它只是重叠了玩家的形象。我读了很多pygame精灵的例子,但是这些例子说要用“敌人.rect.x=-5”或者其他什么东西来代替“敌人.rect.x=player.rect.x”。我也试过这个,但它只是移动图像,而不是跟随球员。我需要制定一个方程式吗?如果是这样的话我不知道怎么做。我如何让敌人移动,同时让它跟随玩家?有人能帮我解决这个问题吗?任何帮助都将不胜感激。Windows7,Python2.6,PyGame2.6,精灵。
在高水平上,你需要计算出从敌人到玩家的矢量。方向向量的
x
和y
分量如下:然后,将方向的倍数添加到敌方位置,使其向玩家移动。
但是:你会注意到当玩家和敌人相隔很远时,这个向量会有一个很大的量值,当他们更接近时,这个向量会有一个很小的量值。因此,为了避免敌人以超高速移动,你可以使方向向量正常化,并乘以速度
s
来控制它。你需要通过改变敌人的位置来缩短敌人和玩家之间的距离。这可以通过找到它们位置之间的差异,然后使用该向量计算normalized(单位长度)方向向量来实现。这样,通过将速度乘以方向向量来改变敌人的位置。
一种方法是在
Enemy
类中添加如下方法。数学运算可以使用内置的math
模块或pygame.math
模块来完成。后者还支持2DVector2
类,因此它可能是实际使用的更好的类。你将需要添加检查,以确定敌人的物体是否会超出,从而击中沿途的球员,如果它移动了这个距离,并作出相应的反应。提示:当移动量大于或等于速度向量的长度时,即对象的速度大于或等于它们之间的距离时,将发生碰撞。
这里,
px
&;py
是敌人跟踪/追逐的目标的位置(全局)。如果需要,还可以自定义沿x&y方向的速度。
相关问题 更多 >
编程相关推荐