Cocos2dx中RotateTo對旋轉方向的處理

2021-07-03 18:29:17 字數 1043 閱讀 2940

今天在寫個demo的時候意外發現了乙個跟rotate相關的有趣的事情。

如果我們想要將乙個物體旋轉朝向另外乙個物體的時候,一般都會採用如下的方法:

// 通過tan值求arctan來得到旋轉角度

auto diff = objrotatetoward->getposition() - objrotated->getposition();

float angleradians = atanf((float)diff.y / (float)diff.x);

float cocosangle = cc_radians_to_degrees(angleradians);

// ---part1 begin---

if (diff.x < 0)

// ---part1 end---

// ---part2 begin---

cocosangle = -cocosangle;

// ---part2 end---**重點內容**

float rotateduration = 10;

auto actionrotate = rotateto::create(rotateduration, cocosangle);

第一部分和第二部分的先後順序有沒有關係呢,別看數值不一樣,但是其實旋轉到的位置是一樣的。

(簡單的幾何問題,解釋一下,不了解的可以看下,了解的就不要浪費時間了~

假如說對-30度分別做如上操作,先進行第一部分再進行第二部分的話,-(-30+180) = -150,而反過來的話是 -(-30) + 180 = 210,發現什麼了沒,其實這是同乙個位置,將兩部分絕對值相加看看,150+210=360,這個可以用公式推出來,-x-180和-x+180的關係。)

雖然位置相同,但是旋轉的方式其實是不同的,乙個是正著轉,另外乙個是反著的,所以有乙個會近一些,有乙個會稍微遠一些,除非正反都是180度~但是cocos2dx在處理這個角度的時候是怎麼做的呢,是直接挑選比較近的方式來轉,比如說210度和-150度,會選-150度來旋轉。最好去試一下,我測試的cocos2dx的版本是3.6.

關於cocos2dx中tableView的一些理解

先看 h檔案中 ifndef helloworld scene h define helloworld scene h include cocos2d.h include cocos ext.h using ns cc using ns cc ext class helloworld public ...

cocos2d x中的精靈

所有的遊戲都有 sprites 精靈,你可能知道或者不知道它們是什麼。精靈就是遊戲中在場景裡進行移動的物件。你可以操縱它們。精靈可能是遊戲中最主要的角色。我知道你在想什麼 難道每乙個圖形物件都是精靈sprite嗎?當然不是!為什麼?當你操縱乙個精靈的時候,它就是乙個精靈。如果你不對它進行操作,那它就...

Cocos2d x中的精靈

精靈的繼承關係 1.減少檔案讀取次數 2.減少opengl es繪製呼叫並且加速渲染 3.減少記憶體消耗 運用集方式為什麼會減少記憶體碎片?通常使用zwoptex和texturepacker設計和生成紋理圖集檔案,以及紋理圖集座標檔案 plist 組成。使用精靈幀快取 有以下幾種 1.紋理快取 2....