2011-02-26 167 views
13

在我的cocos2d遊戲中,我有我的玩家精靈,我想讓他在我傾斜我的iPhone的方向上移動。我可以解決這個問題,我不能解決的最難的是:點在傾斜方向 - iPhone

如何讓我的精靈旋轉指向我傾斜的方向?這在應用商店的「Tilt to Live」遊戲中表現得非常好。我想要那樣的控制。

我的精靈(對於那些不熟悉cocos2d的人)確實有一個旋轉值,如果有幫助的話。

謝謝。

回答

12

如果你不喜歡上述,這裏有一個簡單的方法來獲得合理的結果!

把iPad放在你面前,讓LR左右傾斜,TA朝你/遠離你傾斜。所以LR從-90到90運行,TA從-90到90.(TA消極傾向於你的腹部。)

在屏幕上顯示這兩個數字,並移動設備,所以你確定你有開始的權利。在工作之前,你將無法做任何事情。

solutionAngle將像鍾針一樣,順時針方向,離你12點距離。

經歷這一決策鏈:

如果兩個LR和TA爲零,機器是平的。適當行事。

如果LR是平的(0),則答案爲0或180,具體取決於TA的符號。

如果TA平坦(0),則答案爲90或270,具體取決於LR的符號。

否則:

adjustmentAngle = 反正切(SIN(TA)/ SIN(LR))

//(NB,應該從-90運行90)

如果(LR> 0)finalResult = 90 - adjustmentAngle

如果(LR < 0),finalResult = 270 + adjustmentAngle

我認爲這樣做會的!希望能幫助到你!

IMO ...... 隨着時間的推移,一定要順利結果,感覺良好。

設置角度...

「我不確定現在(關於你自己的想法)的唯一的事情就是如何將其應用到我的球員嗎?我只是讓玩家旋轉值等於調整角度?「 ..您好Josh,是的,只需將旋轉設置爲您使用上述計算的最終角度即可!幸運的是,這很簡單。

如果你要轉換回度和弧度之間/脫穎而出,只需粘貼幾行代碼,每個人都使用:

#include <math.h> 
static inline float degreestoradians (double degrees) {return degrees * M_PI/180;} 
static inline float radianstodegrees (double degrees) {return degrees * 180/M_PI;} 

。 ?

在哪裏的軸...

PS,這裏是你可能想書籤難以置信的方便圖:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAcceleration_Class/Reference/UIAcceleration.html

從加速度計的角度轉換...

「加速度不提供角度的原始數據。如何從原始數據中得到」

完全正確,我忘了提很抱歉。這是一種常見問題...

distanceFactor = square root of (x^2 + y^2 + z^2) 
angle X axis = acos (x/distanceFactor) 
angle y axis = acos (y/distanceFactor) 
angle z axis = acos (z/distanceFactor)) 

你必須寫在屏幕上的三個角度,然後移動它,換句話說測試這個「物理單元測試」你寫的部分,然後再繼續!

這裏這麼多的答案之一:UIAccelerationValue angle

順便說一句,你很可能會看到,你可以通過簡單地將原始X的比例由原始Y值,而不是比得到一個粗略的結果這兩個正弦,在'adjustAngle'的表達......但無論如何現在不用擔心。

最後!

重要讀者應該注意的是,令人驚奇的新核心運動系統,處理大量的這個要求,根據您的需要。一探究竟!!!!!

希望它有幫助!

+0

很酷,感謝您的選擇!也許你可以看看這個?它從實際的瓷磚到現場開發人員,但我無法看到如何應用他給出的代碼。如果你能解釋我如何能夠實際使用它,而不僅僅是它的意義,我將永遠感激! http://www.paradeofrain.com/2010/07/lessons-learned-in-tilt-controls/ – 2011-02-26 20:18:31

+0

加速度計不提供角度的原始數據。如何從原始數據(通常爲-1到1,除非設備被強制移動)進入-90到90範圍,考慮到如果將設備保持在45度角,原始數據不會是0.5,但更喜歡0.7 – 2011-02-26 20:49:52

+0

道歉,我沒有試圖寫你的樣本,因爲我知道一旦找出鏈接代碼將是理想的。我知道工作代碼位於鏈接頁面的底部,但我誤解了它是如何應用於玩家精靈的。我將嘗試你的第二個想法(我不使用Unity),我目前唯一不確定的(關於你自己的想法)是我如何將它應用到我的玩家?我只是讓玩家輪換值等於adjustAngle嗎? – 2011-02-26 20:50:50