我已经尝试了几天如何做到这一点。基本上你控制一个玩家,僵尸跟着你 问题是,我似乎无法让僵尸跟随!我试过如果陈述
if playerx > zombiex:
zombiex=zombiex - 2
screen.blit(zombie,(zombiex,zombiey))
aaaaaand That Didnt Work ....:/ 答案 0 :(得分:1)
也许这就是您搜索的内容。
def length(x, y):
return (x ** 2 + y ** 2) ** .5
def norm(x, y):
_len = length(x, y)
return x / _len, y / _len
class ZombieController(object):
def __init__(self, zombie_view_range):
self._zombs = []
self.append = self._zombs.append
self._range = zombie_view_range
def NextFrame(self, player_pos):
px, py = player_pos
_range = self._range
for zombie in self._zombs:
x, y = zombie.position
dx, dy = px - x, py - y
_len = length(dx, dy)
if _len <= _range:
speed = zombie.speed
direction = norm(dx, dy)
zombie.positon = x + direction[0] * speed, y + direction[1] * speed
答案 1 :(得分:0)
首先,由于没有足够的信息,无法回答您的全部问题。它怎么不能正常工作?
其次,如果你想让僵尸跟随,你需要他们的坐标与玩家融合,所以你需要这样的东西:
if playerx > zombiex:
zombiex = zombiex + max(zombiespeed, playerx - zombiex)
elif playerx < zombiex:
zombiex = zombiex - max(zombiespeed, zombiex - playerx)
NB:
2
替换为您在其他位置定义的zombiespeed
,以便您可以在一个地方更改速度以备将来使用。max()
确保僵尸不会在非常接近时移动玩家。y
方向做同样的事情。