关于移动者的二维精灵物理

2024-05-16 22:21:57 发布

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

我正在尝试在小行星类游戏中实现二维物理。我在窗口边界设置了碰撞边界。在

然而,当我把我的飞船精灵撞到一个边界(并反转x轴或y轴的适当速度),我偶尔会在移动时遇到故障。飞船会暂时跳转,但如果我按住移动键足够长的时间,它通常会自行修复。在

问题是这种故障是显而易见的。在

相关规范章节:

#update velocity
def velocity(self, speed):
    self.vx += math.sin(math.radians(self.angle)) * speed
    self.vy += math.cos(math.radians(self.angle)) * speed

    magnitude = math.sqrt(self.vx*self.vx + self.vy*self.vy)
    if magnitude > self.maxvel:
        self.vx *= 4/magnitude
        self.vy *= 4/magnitude
    if self.speed >= self.maxvel:
        self.speed = self.maxvel
    if self.speed <= -self.maxvel:
        self.speed = -self.maxvel

我的移动代码:

^{pr2}$

我的完整代码在这里:http://pastebin.com/19rHq97R要运行只需要2个映像,您可以使用我猜测的任何东西。在

关于速度的问题,我想不出,关于速度的问题。任何洞察力都值得赞赏。在

编辑:我又做了些调查。我想知道突然的跳跃是不是因为我没有任何加速度程序。http://pastebin.com/vFy9tjyN我的终端日志摘录。我从程序中打印出相关变量。在


Tags: selfifmath速度故障边界speedangle
1条回答
网友
1楼 · 发布于 2024-05-16 22:21:57

尝试以下操作:

DirDict = {"left": (-speed, 0), "right": (speed, 0), "up": (0, -speed), "left": (0, speed)}

if w:
    Direction = DirDict["left"]

我认为这会更稳定,它总是对我有效的。

相关问题 更多 >