私はこのコードを持っています:
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)