→ jyhfeng:我是有把位置各減一半的長寬,不過撞擊旋轉後就會跑掉,比如 05/29 12:57
→ jyhfeng:轉45度,原本的長寬,跟旋轉後的長寬是不一樣的(從左上角 05/29 12:58
→ jyhfeng:為基點來看) 05/29 12:58
以下為不負責任數學推導(未經實際測試)
令Box2DBody中心為(Cx, Cy)、旋轉角度 為T (in radians)
寬度為 W 高度為 H
DisplayObject左上角座標為(X, Y)
旋轉矩陣 M(t) = | cos(t) -sin(t) |
| sin(t) cos(t) |
則 | X | = M(T) * | -0.5 * W | + | Cx |
| Y | | -0.5 * H | + | Cy |
所以
hw = 0.5 * obj.width;
hh = 0.5 * obj.height;
t = body.rotation * Math.PI / 180;
obj.x = Math.cos(t) * -hw + Math.sin(t) * hh + body.x;
obj.y = Math.sin(t) * -hw - Math.cos(t) * hh + body.y;
obj.rotation = body.rotation;
--
Blog http://blog.cjcat.net
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 72.5.59.140
推 jyhfeng:感謝....雖然我還是看不太懂,畢竟三角函數都還回去了 06/06 16:50
→ jyhfeng:不過我還是有找到高手寫好的類別可以使用 06/06 16:51
→ jyhfeng:相關網址我貼在原發帖子裡面,感謝回應 06/06 16:54
推 jyhfeng:cjcat大的解法也可以,驗證過了...多謝cjcat 06/06 17:06