zoukankan      html  css  js  c++  java
  • Box2D lua binding and Usage

    Box2D lua binding pkg and c++ files: LuaBox2D.zip

    Usage:

        local PTM_RATIO = 32.0
    
        local gravity = b2Vec2(0.0, -10.0)
        local _world = b2World:new_local(gravity)
    
        
        -- Create edges around the entire screen
        local groundBodyDef = b2BodyDef:new_local()
        groundBodyDef.position = b2Vec2(0, 0)
        local groundBody = _world:CreateBody(groundBodyDef)
    
    
        local groundEdge = b2EdgeShape:new_local()
        local boxShapeDef = b2FixtureDef:new_local()
        boxShapeDef.shape = groundEdge
    
        groundEdge:Set(b2Vec2(0,0), b2Vec2(winSize.width/PTM_RATIO, 0))
        groundBody:CreateFixture(boxShapeDef)
    
        groundEdge:Set(b2Vec2(0,0), b2Vec2(0, winSize.height/PTM_RATIO))
        groundBody:CreateFixture(boxShapeDef)
    
        groundEdge:Set(b2Vec2(0, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO))
        groundBody:CreateFixture(boxShapeDef)
    
        groundEdge:Set(b2Vec2(winSize.width/PTM_RATIO, winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, 0))
        groundBody:CreateFixture(boxShapeDef)

    Create body and shape

            -- Create body and shape
            local bodyDef = b2BodyDef:new_local()
            bodyDef.type = b2_dynamicBody
            bodyDef.position:Set(x/PTM_RATIO, y/PTM_RATIO)
            bodyDef.userData = bodySprite
            local _body = _world:CreateBody(bodyDef)
     
            local circle = b2CircleShape:new_local()
            circle.m_radius = 26.0/PTM_RATIO
     
            shapeDef = b2FixtureDef:new_local()
            shapeDef.shape = circle
            shapeDef.density = 1.0
            shapeDef.friction = 0.2
            shapeDef.restitution = 0.8
            _body:CreateFixture(shapeDef)
    
            table.insert(body_list, _body)

    tick

        -- tick
        local function tick(dt)
            _world:Step(dt, 10, 10)
            if body_list ~= nil then
                for i, body in ipairs(body_list) do
                        local sprite = sprite_list[i]
                        sprite:setPosition(b2Vec2(body:GetPosition().x * PTM_RATIO, body:GetPosition().y * PTM_RATIO))
                        sprite:setRotation(-1 * CC_RADIANS_TO_DEGREES(body:GetAngle()))
                end
            end
        end
    
        CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(tick, 0, false)
  • 相关阅读:
    C#Thread学习
    C#winform拖动无边框窗体
    c#winform pictureBox使用url加载图片
    C#Async,await异步简单介绍
    C#字符串拼接的三种方式
    FreeMarker学习(宏<#macro>的使用)
    sublime text 2中Emmet8个常用的技巧
    线程通信之管道流
    程序员必懂:javaweb三大框架知识点总结
    mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
  • 原文地址:https://www.cnblogs.com/zhongzf/p/2544002.html
Copyright © 2011-2022 走看看