Python(Pygame)在特定间隔内返回角度

时间:2012-12-18 04:22:07

标签: python rotation pygame intervals angle

我有这段代码:

def getAngle(x1, y1, x2, y2):
rise = y1 - y2
run = x1 - x2
angle = math.atan2(run, rise) # get the angle in radians
angle = angle * (180 / math.pi) # convert to degrees
angle = (angle) % 360 # adjust for a right-facing sprite
return angle

...根据屏幕上的鼠标位置返回一个角度。

我想设置一个间隔,我的对象的旋转将在特定点停止。举个例子:如果角度大于90°,​​我希望我的物体停止获得更高的角度。在这种情况下,90°应该像旋转停止的某个边界。

我认为我需要2个条件,因为左右角度的角度不应该高于90°。

任何人都知道如何解决这个问题?

这部分代码在游戏循环中(它使用定义的getAngle):

    mousex, mousey = pygame.mouse.get_pos()
    for cannonx, cannony in (((width/2)-45, height-25), ((width/2)-45, height-25)):
        degrees = getAngle(cannonx, cannony, mousex, mousey)
        rotcannonImg = pygame.transform.rotate(cannonImg, degrees)
        rotcannonRect = rotcannonImg.get_rect()
        rotcannonRect.center = (cannonx, cannony)
        windowSurface.blit(rotcannonImg, rotcannonRect)

1 个答案:

答案 0 :(得分:0)

短语“左右角度不应高于90°”这个短语在英语中没有明确的含义,所以我不确定你的意图。然而,下图显示了当点(x1,y1)位于线交叉且(x2,y2)特别是八分圆的位置时各种角度与上升和运行的符号之间的关系。注意,dy =上升,dx =运行。也就是说,您可以测试上升的迹象并运行以获得您想要的信息。 lines and octant relations