• 01.Box2dWeb入门教程


    1.下载box2dweb.直接在页面中引用即可。 
    -Box2D.js是未压缩版 
    -Box2d.min.js是压缩版

    2.编写HelloWorld代码。

    <!DOCTYPE HTML>
    <html>
        <head>
            <title>LaiXiao Box2DWeb Test</title>
            <script type="text/javascript" src="js/Box2D.js"></script>
    
        </head>
    
        <body onload="init();">
            <canvas id="canvas" width="600" height="400" style="background-color:#333333;"></canvas>
    
            <script>
            function init(){
                //方便使用
                var  b2Vec2 = Box2D.Common.Math.b2Vec2,
                     b2BodyDef = Box2D.Dynamics.b2BodyDef,
                     b2Body = Box2D.Dynamics.b2Body,
                     b2FixtureDef = Box2D.Dynamics.b2FixtureDef,
                     b2Fixture = Box2D.Dynamics.b2Fixture,
                     b2World = Box2D.Dynamics.b2World,
                     b2MassData = Box2D.Collision.Shapes.b2MassData,
                     b2PolygonShape = Box2D.Collision.Shapes.b2PolygonShape,
                     b2CircleShape = Box2D.Collision.Shapes.b2CircleShape,
                     b2DebugDraw = Box2D.Dynamics.b2DebugDraw;
    
                //1.创建一个世界
                var world = new b2World(new b2Vec2(0,9.8),true);
    
                //2.创建一个矩形刚体
                //定义一个材质
                var fixDef = new b2FixtureDef;
                fixDef.density = 1.0;//密度
                fixDef.friction = 0.5;//摩擦
                fixDef.restitution = 0.2;//弹性
                fixDef.shape = new b2PolygonShape;//矩形
                fixDef.shape.SetAsBox(5, 0.5);//宽高           
                //创建一个矩形地板刚体
                var bodyDef = new b2BodyDef;                 
                bodyDef.type = b2Body.b2_staticBody;//静态的
                bodyDef.position.x = 10;    //X轴
                bodyDef.position.y = 13;    //Y轴     
                //世界中添加一个刚体
                world.CreateBody(bodyDef).CreateFixture(fixDef);
    
    
                //3.同上创建一个圆形刚体
                var fixDef2 = new b2FixtureDef;
                fixDef2.density = 1.0;
                fixDef2.friction = 0.5;
                fixDef2.restitution = 0.2;
                fixDef2.shape = new b2CircleShape(1);   
    
                var bodyDef2 = new b2BodyDef;                
                bodyDef2.type = b2Body.b2_dynamicBody;
                bodyDef2.position.x = 9;    
                bodyDef2.position.y = 1;    
                world.CreateBody(bodyDef2).CreateFixture(fixDef2);
    
    
                //4.setup debug draw
                var debugDraw = new b2DebugDraw();
                debugDraw.SetSprite(document.getElementById("canvas").getContext("2d"));
                debugDraw.SetDrawScale(30.0);
                debugDraw.SetFillAlpha(0.3);
                debugDraw.SetLineThickness(1.0);
                debugDraw.SetFlags(b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit);
                world.SetDebugDraw(debugDraw);
    
                //5.一帧帧执行
                window.setInterval(update, 1000 / 60);
                function update() {
                     //Take a time step.
                     world.Step(
                           1 / 60   //frame-rate
                        ,  10       //velocity iterations
                        ,  10       //position iterations
                     );
                     //Call this to draw shapes and other debug draw data.
                     world.DrawDebugData();
                     //Call this after you are done with time steps to clear the forces. You normally call this after each call to Step, unless you are performing sub-steps.        
                     world.ClearForces();
    
                     //console.log(111);
                };
    
    
            }
            </script>
        </body>
    
    </html>
  • 相关阅读:
    7.29随堂笔记
    LeetCode77. 组合
    347. 前 K 个高频元素
    LeetCode239. 滑动窗口最大值
    C++_数字字符串互相转换
    LeetCode150. 逆波兰表达式求值
    LeetCode1047. 删除字符串中的所有相邻重复项
    LeetCode20. 有效的括号
    Leetcode225. 用队列实现栈 && LeetCode232. 用栈实现队列
    leetCode5663. 找出第 K 大的异或坐标值
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/6109562.html
Copyright © 2020-2023  润新知