2016-12-30 79 views
1

我正在爲自己製作一個實用程序,以便輕鬆地將度數轉換爲我和我的遊戲中的x和y座標,並且我陷入了一個問題;試圖在屏幕上以角度移動玩家。我發現了多種無法使用的公式,我需要一些幫助。這裏是我的代碼,我發現:移動度pygame

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) 

它outputed這樣的: [-89.8549554331319,-286.22733444608303]

請幫幫我!

回答

1

你的方法幾乎是正確的。 sin/cos函數應該使用弧度。這裏是我通常在C++中使用的方法(,移植到python)進行2D移動。

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