作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] BOX2D模拟与真实位置的差异 怎麽算呢?
时间Thu May 31 09:57:03 2012
1F:→ jyhfeng:我是有把位置各减一半的长宽,不过撞击旋转後就会跑掉,比如 05/29 12:57
2F:→ jyhfeng:转45度,原本的长宽,跟旋转後的长宽是不一样的(从左上角 05/29 12:58
3F:→ 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
4F:推 jyhfeng:感谢....虽然我还是看不太懂,毕竟三角函数都还回去了 06/06 16:50
5F:→ jyhfeng:不过我还是有找到高手写好的类别可以使用 06/06 16:51
6F:→ jyhfeng:相关网址我贴在原发帖子里面,感谢回应 06/06 16:54
7F:推 jyhfeng:cjcat大的解法也可以,验证过了...多谢cjcat 06/06 17:06