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:表示摩擦力
  • 参数3为 cc.p 类型,它也是一个可选参数,表示 body 与中心点的偏移量,默认下为cc.p(0,0)

 

第26行注释后的效果图

 

 

未注释的效果图

 

 

posted @ 2015-09-20 00:43  silent-bobo  阅读(430)  评论(0编辑  收藏  举报