Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对角线移动_Python_Pygame - Fatal编程技术网

Python 对角线移动

Python 对角线移动,python,pygame,Python,Pygame,我试图实现一个追逐玩家的敌人,但当敌人沿对角线移动时,它的移动速度似乎比在单轴上移动时慢,我不知道为什么。这是我给敌人的密码: import pygame import constants import math from Character import Player class Enemy(pygame.sprite.Sprite): def __init__(self, filename, x, y): super().__init__()

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

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)

如果需要更多的代码,请告诉我,但我认为不会,因为我的其他代码都不会影响敌人的移动。任何帮助都将不胜感激,当你对角线移动时,你的速度变为代码>3/1.41</代码>(让我们考虑<代码> dx==Dy</代码>),并且由于舍入,它变成了<代码> 2 < /代码>,它慢了大约1.5倍。但是,我如何在编码中实现这一点呢?我尝试了一些if语句,但似乎没有什么能让我在对角移动时将速度修改为3*1.41