2016-12-30 73 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