快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: 站在5米外看10米高的楼,和100米外看10米的楼能一样高吗? 三维世界和二维世界的尺寸本来就不一样,不要钻牛角尖啦 ~










最近更新:
● tolikkk阁下在讨论区里 回复“good seo ...”(01:02:19)
● tolikkk阁下在讨论区里 回复“good seo ...”(00:13:51)
● tolikkk阁下在讨论区里 回复“good seo ...”(00:09:07)
浏览主题:《超简易papervision3D基础 第七篇 谁碰了我一下》

《超简易papervision3D基础 第七篇 谁碰了我一下》
DDM君 (2012-03-16 05:50:41)

DDM君 , Flab3D.com (允许转载,转载请注明)


判断两个物体接触可能是交互游玩类程序的一个基础需求,不过目前pv3d这种功能还是很初级的。测试碰撞一般有球体,AABB和多边形几种办法,我们这里仅仅是最简单的以球体来测试碰撞(并不是只能测试碰撞球体)。
(Pv3d默认没有AABB的接触,如果实在需要AABB立方体接触的朋友,可以去讨论区索要,我们会抽时间加入到我们的研究所pv3d傻瓜包)
Pv3d里,我们直接用hitTestObject()这个放法就可以简单的测试物体和物体是否接触。








原理解释:
球体碰撞的原理是非常简单的。由每个物体中心点,到它的最远点为半径虚拟出一个球体。判断两个物体是否相撞,只用判断两个物体中点的距离是否小于两个虚拟球体半径之和即可。
下面这幅图会帮助您理解:
碰撞检测
对,也就是说,球体碰撞是非常不准确但快捷的碰撞,很多场合也足够用了。而且我们这篇毕竟也是‘超简易教程’。

代码解释:
这次我们要制作蓝色小球左右运动,每当接触到绿色小球时,就让绿色小球转动。
这次代码解释非常简单,大部分都是以前的东西。如果不熟悉请先阅读我们之前的教程。
需要的朋友可以下载我们的源代码

这个和pv3d没什么关系,就是让一个东西在某区间来回移动的代码。
sphere1.x+=speed;
if (sphere1.x>500||sphere1.x<-500)
{
speed*=-1;
}


一旦sphere1‘接触’到了sphere2,就让sphere2开始旋转,直到不‘接触’为止。
if (sphere1.hitTestObject(sphere2)) {
sphere2.rotationY+=10;
}


这里在下要提一下,我们从来没有在enterFrame的方法里面测试过sphere,cube,plane等等物体是否存在就开始动了,这是因为这些物体都是pv3d的‘内置’物体,没有必要去确定是否存在先。而外部导入的东西,比如说md2,dae等等模型,jpg,bmp等等位图必需要先确定是否存在,再进行各种运动,否则就要报错。

到此,配合您本来的ActionScript3基础,您至少应该能做出一些小小的pv3d程序了,我们希望能看到您自己的作品。继续加油。
有任何不清楚的地方,欢迎到讨论区发言。(无需注册)



DDM君
Flab3D.com


Flash3d研究所推荐的Pv3d傻瓜包下载
源文件下载






flash 3d 研究所
(2009-01-06 22:18:53)
嘿学习了


flash 3d 研究所
(2009-02-16 23:43:07)
不错 真不错


flash 3d 研究所
(2009-05-13 14:00:37)
好象碰撞时出现破面了


flash 3d 研究所
(2009-12-29 12:14:06)
放大之后看在边缘确实是有破面的现象啊,自己试试分层吧


flash 3d 研究所
(2010-01-31 22:31:08)
学习了。


flash 3d 研究所
(2010-09-09 15:29:24)
解决了破图


flash 3d 研究所
(2011-03-20 12:12:40)
咿呀 真是不错 学习了


flash 3d 研究所
(2011-08-01 13:28:34)
恩,不错的学习资料


flash 3d 研究所
(2011-08-01 13:40:43)
恩,非常不错的基础资料


flash 3d 研究所
(2011-12-10 16:07:36)
强烈支持本教程


flash 3d 研究所
(2012-02-29 10:54:28)
非常不错的教程,支持


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了