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] は、それがうまく働きました。 しかし、私は、このやったとき:それはこのoutputed

move(90, 300) 

: [-89.8549554331319を、-286.22733444608303]を

が私を助けてください!

答えて

1

あなたのアプローチはほぼ正しいです。 sin/cos関数にはラジアンを使用する必要があります。ここでは、2Dの動きのために私がよくC++(をPythonに移植したもの)で使う方法があります。

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

関連する問題