/*
var materials:MaterialsList = new MaterialsList();
materials.addMaterial(new WireframeMaterial(0xFF4444), "all");
box = _physics.createCube(materials,500,500,500,3,3,3);
//_physics.removeBody(box);//对象将不具有刚性,也就是说不能进行碰撞
//得到3d对象 并将其移除场景
//var my3d:DisplayObject3D=_physics.getMesh(box);
//scene.removeChild(my3d);
//var apple:DisplayObject3D = new DAE("apple.dae");
var sphere:Sphere= new Sphere(null,500);//
scene.addChild(sphere);
var custom3d:RigidBody = new JSphere(new Pv3dMesh(sphere),30);//Pv3dMesh(shpere)里面的参数只需要为DisplayObject3D类型
custom3d.y = 700;
custom3d.rotationZ = Math.PI / 4;// Use radians here
_physics.addBody(custom3d);//增减进boy对象中
设置力
对刚性对象 RigidBody的属性和方法进行:
// physicsObject.addWorldForce(new JNumber3D(moveForce, 0, 0), physicsObject.currentState.position);
// joint的使用
JConstraintPoint(body0:RigidBody, body0Pos:JNumber3D, body1:RigidBody, body1Pos:JNumber3D, allowedDistance:Number = 1, timescale:Number = 1)
var pos1:JNumber3D;
var pos2:JNumber3D;
chain = new Array();
for (i = 1; i < ballBody.length; i++ )
{
trace(i);
pos1 = JNumber3D.multiply(JNumber3D.UP, -ballBody[i - 1].BoundingSphere);
pos2 = JNumber3D.multiply(JNumber3D.UP, ballBody[i].BoundingSphere);
chain[i] = new JConstraintPoint(ballBody[i - 1], pos1, ballBody[i], pos2, 1, 0.2); // 注 ballBody 是存有rigidBody对象数组
PhysicsSystem.getInstance().AddConstraint(chain[i]);
}
*/
package
{
import flash.events.Event;
import jiglib.plugin.papervision3d.Papervision3DPhysics;
import org.papervision3d.view.BasicView;
import org.papervision3d.materials.*;
import jiglib.physics.RigidBody;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.objects.DisplayObject3D;
import jiglib.geometry.*;
import jiglib.plugin.papervision3d.*
public class Main extends BasicView
{
private var _physics:Papervision3DPhysics;
private var ground:RigidBody;
private var box:RigidBody;
private var ball:RigidBody;
private var custom3d:RigidBody;
public function Main()
{
super(800, 600, true);
initPhysics();
startRendering();
}
private function initPhysics():void
{
//need the scene instance (Scene3D) and the speed for the engine
_physics = new Papervision3DPhysics(scene,7);// 转变为刚性场景,一切刚性对象都经过它创建 //后面一个是模仿的程度 ,和box2d的时间戳一样
createGround();
createBox();
//createSphere();
//createCustom3d();
}
override protected function onRenderTick(event:Event = null):void
{
//update the engine in each frame
_physics.step();
//对应的场景的更新;
super.onRenderTick(event);
}
// 下面创建3d刚性对象
private function createGround():void
{
var mat:WireframeMaterial = new WireframeMaterial(0xCCCCCC);//材质
ground = _physics.createGround(mat,1000,0);
}
//创建Cube 具体看里面的基本功能
private function createBox():void
{
var materials:MaterialsList = new MaterialsList();
materials.addMaterial(new WireframeMaterial(0xFF4444), "all");
box = _physics.createCube(materials,500,500,500,3,3,3);
//_physics.removeBody(box);//对象将不具有刚性,也就是说不能进行碰撞
//得到3d对象 并将其移除场景
//var my3d:DisplayObject3D=_physics.getMesh(box);
//scene.removeChild(my3d);
}
//创建shpere
private function createSphere():void
{
ball = _physics.createSphere(new WireframeMaterial(0xFF44FF),500);
}
//创建自定义的对象 兑现个可以是 DAE也可以是普通的CUBE对象 下面个人认为更易控制些 下面同样创建一个Sphere 使用
private function createCustom3d()
{
//var apple:DisplayObject3D = new DAE("apple.dae");
var sphere:Sphere= new Sphere(null,500);//
scene.addChild(sphere);
var custom3d:RigidBody = new JSphere(new Pv3dMesh(sphere),30);//Pv3dMesh(shpere)里面的参数只需要为DisplayObject3D类型
custom3d.y = 700;
custom3d.rotationZ = Math.PI / 4;// Use radians here
_physics.addBody(custom3d);//增减进boy对象中
}
}
}