《超简易papervision3D基础 第七篇 谁碰了我一下》
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.comFlash3d研究所推荐的Pv3d傻瓜包下载源文件下载