jiglib 最基本功能程序


/*

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对象中

  }

 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值