【问题标题】:Diagonal movement对角线运动
【发布时间】:2018-08-12 15:46:55
【问题描述】:

我正在尝试实现一个追逐玩家的敌人,但是当敌人沿对角线移动时,它的移动速度似乎比在单轴上移动时要慢,我不知道为什么。这是我的敌人代码:

import pygame
import constants
import math
from Character import Player

class Enemy(pygame.sprite.Sprite):

    def __init__(self, filename, x, y):

        super().__init__()    

        self.image = pygame.image.load(filename).convert()
        self.image.set_colorkey(constants.BLACK)

        self.rect = self.image.get_rect()
        self.rect.y = y
        self.rect.x = x

        self.speedx = -3
        self.speedy = -3

        self.health = 100

    def update(self, player):

        dx = self.rect.x - player.rect.x
        dy = self.rect.y - player.rect.y

        dist = math.hypot(dx, dy)

        dx = dx / dist
        dy = dy / dist

        self.rect.x += dx * self.speedx
        self.rect.y += dy * self.speedy




* in the main loop *

current_room.enemy_sprites.update(player)

如果需要更多代码,请告诉我,但我认为不会有,因为我的其他代码都不会影响敌人的移动。任何帮助都将不胜感激!

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    当你水平或垂直移动时,你的速度是-3,当你对角移动时,你的速度变成-3 / 1.41(让我们考虑dx == dy),由于四舍五入,它变成了2,大约是慢 1.5 倍。

    【讨论】:

    • 哦,好吧,这是有道理的,但我将如何在我的编码中实现它?我尝试了一些 if 语句,但似乎没有什么能让我在对角线移动时将速度修改为 3 * 1.41
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多