0

私はこのコードを持っています:

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° は回転が停止する境界のようなものです。

角度が左右90°より高くなってはいけないので、2つの条件が必要だと思います。

それを解決する方法を知っている人はいますか?

コードのこの部分はゲーム ループにあります (定義された 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)
4

1 に答える 1

0

「角度は左右90°より高くしてはいけない」という表現は、英語では明確な意味がなく、何を意図しているのかよくわかりません。ただし、次の図は、点 (x1, y1) が線の交差する位置にあり、(x2, y2) が特定の八分円である場合の、さまざまな角度と上昇および実行の符号の関係を示しています。dy = 上昇、dx = 実行に注意してください。つまり、上昇の兆候をテストして実行し、必要な情報を取得できる可能性があります。 直線と八分円の関係

于 2012-12-18T05:31:44.887 に答える