Re: [問題] BOX2D模擬與真實位置的差異 怎麼算呢?

看板Flash作者 (CJ Cat)時間13年前 (2012/05/31 09:57), 編輯推噓2(202)
留言4則, 1人參與, 最新討論串2/2 (看更多)

05/29 12:57,
我是有把位置各減一半的長寬,不過撞擊旋轉後就會跑掉,比如
05/29 12:57

05/29 12:58,
轉45度,原本的長寬,跟旋轉後的長寬是不一樣的(從左上角
05/29 12:58

05/29 12:58,
為基點來看)
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

06/06 16:50, , 1F
感謝....雖然我還是看不太懂,畢竟三角函數都還回去了
06/06 16:50, 1F

06/06 16:51, , 2F
不過我還是有找到高手寫好的類別可以使用
06/06 16:51, 2F

06/06 16:54, , 3F
相關網址我貼在原發帖子裡面,感謝回應
06/06 16:54, 3F

06/06 17:06, , 4F
cjcat大的解法也可以,驗證過了...多謝cjcat
06/06 17:06, 4F
文章代碼(AID): #1Fni_o7T (Flash)
文章代碼(AID): #1Fni_o7T (Flash)