zoukankan      html  css  js  c++  java
  • b2BuoyancyController 使用浮力

    package{
        import Box2D.Collision.b2AABB;
        import Box2D.Collision.b2RayCastInput;
        import Box2D.Collision.b2RayCastOutput;
        import Box2D.Collision.Shapes.b2CircleShape;
        import Box2D.Collision.Shapes.b2PolygonShape;
        import Box2D.Collision.Shapes.b2Shape;
        import Box2D.Common.Math.b2Vec2;
        import Box2D.Dynamics.b2Body;
        import Box2D.Dynamics.b2BodyDef;
        import Box2D.Dynamics.b2Fixture;
        import Box2D.Dynamics.b2FixtureDef;
        import Box2D.Dynamics.b2World;
        import flash.display.Sprite;
        import flash.utils.getTimer;
        import Box2D.Dynamics.Joints.b2PulleyJoint;
        import Box2D.Dynamics.Joints.b2PulleyJointDef;
        import Box2D.Dynamics.Controllers.b2BuoyancyController;
    
        /**
        * 
        */
        public class Main extends BaseMain{
            
            private var _bodies:Vector.<b2Body>=new Vector.<b2Body>();
            
            public function Main(){
                super(new b2Vec2(0,10));
            }
            
            override protected function init():void{
                createBodies();
                createBuoyancyController();
            }
            
            private function createBodies():void{
                for(var i:int=0;i<50;i++){
                    var x:Number=stage.stageWidth*0.5;
                    var y:Number=50;
                    var body:b2Body=Math.random()>0.5?createBox(20,20,x,y):createCircle(10,x,y);
                    _bodies.push(body);
                }
            }
            
            private function createBuoyancyController():void{
                var controller:b2BuoyancyController=new b2BuoyancyController();
                controller.angularDrag=0.5;
                controller.density=1.5;//设置水的密度,要大于水中刚体的密度才能上浮
                //controller.gravity=null;
                controller.linearDrag=0.5;
                controller.normal.Set(0,-1);//设置水面的法向量
                controller.offset=-200/_pixelToMeter;//水面的高度,默认在最顶部(y轴0的位置),-100表示向下移动100
                //controller.useDensity=false;
                //controller.useWorldGravity=true;
                //controller.velocity.Set(0,0);
                _world.AddController(controller);
                for(var i:int=0;i<_bodies.length;i++){
                    controller.AddBody(_bodies[i]);
                }
                
            }
            
            override protected function stepBefore():void{ 
                
            }
            
            
        };
    }
  • 相关阅读:
    jquery获取当前元素的坐标
    JS获取鼠标点击位置坐标
    基于jquery fly插件实现加入购物车抛物线动画效果
    PHP下载远程图片的方法
    IQ测试
    PHP面试题
    Apache服务器错误问题Internal Server Error
    php获取当前浏览器完整地址
    jQuery检测滚动条到达顶部或底部
    scrapy 命令
  • 原文地址:https://www.cnblogs.com/kingBook/p/7643995.html
Copyright © 2011-2022 走看看