Quick-Cocos2d-x 构建物理世界 学习笔记

创建使用物理引擎的游戏场景

display.newPhysicsScene("GameScene")

开始创建物理世界

self.backgroundLayer = BackgroundLayer.new()
        :addTo(self)
    -- 获取场景绑定的物理世界对象
    self.world = self:getPhysicsWorld()
    -- 设置重力大小
    self.world:setGravity(cc.p(0, -98))

设置物理边界

-- 创建一个矩形
local box = display.newNode()

    -- createEdgeSegment 方法创建一个不受重力约束的自由线条
    -- 有4个参数:
    -- 参数1为 cc.p 类型,表示线条的起点;
    -- 参数2也为 cc.p 类型,表示线条的终点;
    -- 参数3为 cc.PhysicsMaterial 类型,表示物理材质的属性
    -- 参数4为 number 类型,表示线条粗细。
    -- createEdgeBox
    -- createEdgePolygon
    -- createEdgeChain

    local body = cc.PhysicsBody:createEdgeSegment(cc.p(0, height1), cc.p(width, height1), cc.PhysicsMaterial(0.0, 0.0, 0.0)) 
    box:setPhysicsBody(body)
    self:addChild(box)

创建物理对象

local Player = class("Player", function()

   return display.newSprite("#flying1.png")

end)

function Player:ctor()

-- 调用cc.PhysicsBody:createBox()方法创建了一个矩形的 body
    -- 3个参数
    -- 参数1为 cc.size 类型,表示矩形 body 的尺寸大小
    -- 参数2为 cc.PhysicsMaterial 类型,可自定义,默认cc.PHYSICSBODY_MATERIAL_DEFAULT
    -- 参数3为 cc.p 类型,表示 body 与中心点的偏移量
    self:addAnimationCache()
    --创建刚体
    local body = cc.PhysicsBody:createBox(self:getContentSize(), cc.PHYSICSBODY_MATERIAL_DEFAULT, cc.p(0,0))
    -- 将刚体添加到精灵上
    self:setPhysicsBody(body)
    -- 设置是否受重力效果影响
    self:getPhysicsBody():setGravityEnable(false)
end

return Player

未完待续。。。

你可能感兴趣的:(游戏开发)