2013-12-19 41 views
0

我在嘗試着解決如何在8個方向中的一個上射擊子彈時遇到了麻煩。在旅行方向上的子彈火箭

玩家只能在羅盤方向0,45,90,135,180等點

所以我需要的是,我可以在spawnEntity用來發送子彈的方向上的播放機的公式面臨着不變的速度。

我試過這個;

sinAngle = Math.cos(90) * 1000; 
    cosAngle = Math.sin(90) * 1000; 

    bulletX = (this.pos.x); 
    bulletY = (this.pos.y); 
    return { x: bulletX, y: bulletY, sin: sinAngle, cos: cosAngle }; 

這樣的調用是這樣的;

trajectory = this.calculateAngle(); 
    ig.game.spawnEntity(EntityBullet, trajectory.x, trajectory.y, { vel: { x: trajectory.sin, y: -trajectory.cos } }); 

但是,一切都是弧度,我希望它在羅盤度。

回答

1

如果您只想將度數轉換爲弧度,那麼您只需使用:d * (π/180)其中d是度數。

如果您還希望能夠說羅盤方向(如在北,南,東,西),創建一個枚舉並將它們轉換爲度並使用度到弧度函數。

+0

沒有java類,正是我已經有的,哪些不起作用。我正試圖提供數學函數與羅盤度,但他們期待弧度。我需要一個函數,將計算基於度數指南針的x和y – griegs

+0

所以你很好,用角度而不是某種方式來表示N,S,E,W等?因爲這很簡單。修復問題... – Jwosty

+0

我現在有這個,但0度羅盤出來0和180羅盤出來270.翻轉和顛倒。我可以編程,但不覺得這是一個很好的解決方案 – griegs

0

我已經完成了任何遊戲編程,但您可以使用MathHelper.ToDegrees將弧度轉換爲度數。

+0

我其實有學位,但我認爲cos和sin正在等待弧度 – griegs

+1

哦,好的。相反,這將是ToRadians。祝你好運! –

+0

感謝您的幫助。和遊戲,這不僅僅是一個真正的項目練習 – griegs