使用Unity的时候了解到Unity可通过射线碰撞检测来精确判断地形,从而实现不规则地形角色的运动模拟,那么away3d是否也有相同功能呢?通过样例学习,发现away3d中有鼠标拾取的功能。而这个功能的核心之一恰好就是Raycast方式;这个方式的原理就是从摄影机发射一条射线并判断焦点从而完成三维物件的拾取。那么,这条射线是否可人为定义从指定位置发射呢?答案是肯定的。away3d.core.pick.RaycastPicker就提供了此功能;RaycastPicker的getEntityCollision方法可获取射线所经过区域的交点;焦点是away3d.core.pick.PickingColliderVO类型的对象,包含了碰撞射线的属性;通过该对象的rayEntryDistance属性是射线起点到交点的长度;rayEntityCollision的参数有三个:第一是射线起点位置向量,第二参数是射线方向向量,第三参数是需要碰撞碰撞检查的Vector.<Entity>组;知道了这些,下面就动手看看是不是如自己所想吧;
import away3d.core.pick.RaycastPicker;
import away3d.core.pick.PickingCollisionVO;
import away3d.containers.View3D;
import away3d.primitives.CubeGeometry;
import away3d.materials.ColorMaterial;
import away3d.primitives.PlaneGeometry;
import away3d.entities.Mesh;
import away3d.entities.Entity;
import away3d.controllers.HoverController;
import away3d.primitives.SphereGeometry;
import away3d.entities.Sprite3D;
import away3d.materials.TextureMaterial;
import away3d.textures.BitmapTexture;
import away3d.core.pick.PickingColliderType;
var v3D:View3D=new View3D();
stage.addChild(v3D);<