敌人在屏幕上方生成并试图在屏幕中间跟随玩家,但当它靠近玩家时,游戏会因错误而不是游戏结束而崩溃。
如何在敌人类 update() 方法中传递玩家坐标而不是 600,325,即窗口的高度、宽度。
我想让敌人跟随玩家并在玩家外部的随机位置而不是仅从屏幕上方生成敌人,以及如何随着分数的增加而增加敌人。
我得到的错误是:
dirvect.normalize()
ValueError: Can't normalize Vector of length Zero
下面的代码是类敌人:
class Mob(pg.sprite.Sprite):
def __init__(self):
pg.sprite.Sprite.__init__(self)
self.image = pg.image.load('enemy.png').convert_alpha()
self.image = pg.transform.smoothscale(pg.image.load('enemy.png'), (33, 33))
self.image_orig = self.image.copy()
self.radius = int(29 * .80 / 2)
self.rect = self.image.get_rect()
self.rect.x = random.randrange(width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speed = 4
self.rot = 0
self.rot_speed = 5
self.last_update = pg.time.get_ticks()
def rotate(self):
now = pg.time.get_ticks()
if now - self.last_update > 50:
self.last_update = now
self.rot = (self.rot + self.rot_speed) % 360
new_image = pg.transform.rotozoom(self.image_orig, self.rot, 1)
old_center = self.rect.center
self.image = new_image
self.rect = self.image.get_rect()
self.rect.center = old_center
def update(self):
self.rotate()
dirvect = pg.math.Vector2(600 - self.rect.x,
325 - self.rect.y)
dirvect.normalize()
# Move along this normalized vector towards the player at current speed.
dirvect.scale_to_length(self.speed)
self.rect.move_ip(dirvect)
if self.rect.top > height + 10 or self.rect.left < -25 or self.rect.right > width + 20:
self.rect.x = random.randrange(width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speed = random.randrange(1, 4)
以下是用于添加敌人:
for i in range(5):
m = Mob()
all_sprites.add(m)
mobs.add(m)
score = 0
交互式爱情
相关分类