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

2024-09-29 23:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经试了好几天了。基本上你控制了一个玩家,僵尸会跟着你。
问题是,我好像不能让僵尸跟着我!我试过If语句

    if playerx > zombiex:
        zombiex=zombiex - 2
        screen.blit(zombie,(zombiex,zombiey))

但那没用。。。。:/
有什么想法吗?在


Tags: if玩家语句screen僵尸zombieblitplayerx
2条回答

也许这就是你要找的。在

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

首先,不能回答你所有的问题,因为没有足够的信息。它到底是怎么工作的?在

其次,如果你想让僵尸跟随,你需要他们的坐标来与玩家会合,所以你需要这样的东西:

if playerx > zombiex:
    zombiex = zombiex + max(zombiespeed, playerx - zombiex)
elif playerx < zombiex:
    zombiex = zombiex - max(zombiespeed, zombiex - playerx)

注意:

  • 我将2替换为您在别处定义的zombiespeed,这样您就可以在一个地方为将来更改速度。在
  • 我使用max()来确保僵尸在离玩家很近的时候不会从玩家身边移动。在
  • 显然,对于y方向,你也会做同样的事情。在

相关问题 更多 >

    热门问题