对角线运动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对角线运动相关的知识,希望对你有一定的参考价值。

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

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时,当你对角移动时,你的速度变为-3 / 1.41(让我们考虑dx == dy),并且由于四舍五入它变成2,大约慢1.5倍。

以上是关于对角线运动的主要内容,如果未能解决你的问题,请参考以下文章

Unity 2D Top Down Shooter 运动问题 C#

Unity FPS 运动

从平移手势切割对角线运动

python控制窗口对角线运动

pygame中奇怪的矢量运动

HDU 2067 小兔的棋盘