Quick-cocos2d-x3.3 Study (十二)--------- 创建一个圆形的物体并带有物理引擎效果
创建带物理效果的心心图片
先创建一个物理场景
1 local GameScene = class("GameScene", function ( ) 2 -- body 3 -- return display.newScene("GameScene") 4 -- 创建一个带物理效果的场景 5 return display.newPhysicsScene("GameScene") 6 end)
在这个物理世界中添加物理心心
1 -- 获取场景中绑定的物理世界对象 2 self.world = self:getPhysicsWorld() ; 3 -- 设置场景中的重力加速度 4 self.world:setGravity( cc.p( 0, -98.0 ) ) ; 5 -- 设置可以看见物理效果的调试状态 6 self.world:setDebugDrawMask( cc.PhysicsWorld.DEBUGDRAW_ALL ) ; 7 8 9 -- 创建一个心心,带物理特效的心心 10 self.heart = display.newSprite("image/pic/heart.png") 11 -- 设置心心的位置 12 self.heart:setPosition( display.cx, display.top - self.heart:getContentSize().height) 13 -- 将心心添加到场景中 14 self.heart:addTo(self) 15 16 -- 设置物体的密度、反弹力、摩擦力, 17 -- 将其都设置为 0 是为了在碰撞的时候不发生任何物理变化 18 local MATERIAL_DEFAULT = cc.PhysicsMaterial( 0.0, 0.0, 0.0 ) 19 -- 1 20 local heartBody = cc.PhysicsBody:createCircle( 21 self.heart:getContentSize().width / 2, MATERIAL_DEFAULT 22 ) 23 -- 为物体添加物理引擎 24 self.heart:setPhysicsBody( heartBody ) 25 -- 屏蔽物理世界中的刚体收到重力的影响 26 -- self.heart:getPhysicsBody():setGravityEnable(false)
这里调用cc.PhysicsBody::createCircle()
方法创建了一个圆形的 body;
createCircle(radius, material, offset),
createCircle方法有三个参数,分别是:
- 参数1为 cc.size 类型,它表示圆形 body 的半径外大小。
- 参数2为 cc.PhysicsMaterial 类型,表示物理材质的属性,
- 默认情况下为 cc.PHYSICSBODY_MATERIAL_DEFAULT。
- 该参数也可自定义,方法如下:
cc.PhysicsMaterial(density, restitution, friction)
- density:表示密度
- restitution:表示反弹力
- friction:表示摩擦力
- 该参数也可自定义,方法如下:
- 默认情况下为 cc.PHYSICSBODY_MATERIAL_DEFAULT。
- 参数3为 cc.p 类型,它也是一个可选参数,表示 body 与中心点的偏移量,默认下为cc.p(0,0)
第26行注释后的效果图
未注释的效果图