2016-12-30 10 views
1

나는 게임에서 x와 y 좌표로도 쉽게 변환 할 수있는 유틸리티를 만들고 있는데 문제가 생겼다. 화면을 가로 질러 플레이어를 움직이기 위해 노력했습니다. 나는 여러 가지 수식이 발견되어 작동하지 않았으므로 도움이 필요합니다. 그때이 실행게임에서 도자리로 이동

def move(degrees, offset): 
    x = math.cos(degrees * 57.2957795) * offset #57.2957795 Was supposed to be the 
    y = math.sin(degrees * 57.2957795) * offset #magic number but it wont work. 
    return [x, y] 

:

move(0, 300) 

출력 : 여기에 내가 발견 내 코드입니다 [300.0, 0.0] 는 그것을 잘 작동했다. 하지만 난이했을 때 :이 출력 됨

move(90, 300) 

: [-89.8549554331319을 -286.22733444608303]을

저를 도와주세요!

답변

1

접근 방법이 거의 정확합니다. sin/cos 함수에 라디안을 사용해야합니다. 다음은 2D 이동을 위해 C++ (이 파이썬으로 이식 됨)에서 일반적으로 사용하는 방법입니다.

import math 
def move(degrees, offset) 
    rads = math.radians(degrees) 
    x = math.cos(rads) * offset; 
    y = math.sin(rads) * offset; 
    return x, y 
+0

감사합니다. X 좌표와 Y 좌표를 한 좌표에서 다른 좌표로 변환하는 것과 같은 각도로 변환하는 방법을 알고 있다면 궁금합니다. 고마워, 그게 도움이 될거야! – XCode

+0

도움이 되니 기쁩니다! 나는 따라 가지 않는다? 데카르트 좌표'x'와'y'를도 단위로 변환하고 싶습니까? 극좌표로 변환 하시겠습니까? 또는 경도/위도로 변환하고 싶습니까? – ospahiu

1

숫자는 정확하지만 조작이 잘못되었습니다. 도를 라디안으로 변환하려면 반원 당 180 도씩 나누고 반원마다 π 라디안을 곱합니다. 이것은 으로 나누는 것과 같습니다.

+0

안녕하세요 도움을 주신 데 대해 감사드립니다. 어떻게 코드를 추가하면 도움이 될지 궁금한 점이 있습니까? – XCode

+0

나누기 연산자는 "/"입니다. –

+0

그건 내가하는 일이 아니라는 의미가 아닙니다. – XCode