Python / Pygame使对象跟随另一个对象

时间:2011-07-22 12:51:38

标签: python programming-languages pygame

我已经尝试了几天如何做到这一点。基本上你控制一个玩家,僵尸跟着你 问题是,我似乎无法让僵尸跟随!我试过如果陈述

    if playerx > zombiex:
        zombiex=zombiex - 2
        screen.blit(zombie,(zombiex,zombiey))
aaaaaand That Didnt Work ....:/
任何想法?

2 个答案:

答案 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方向做同样的事情。