cocos2d-x开发: 场景实体(entity)管理(3)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:03 点击:

p> 

p>1 armature:getAnimation():play( action_const_name )

p>2 

p>3 local bounding_box = armature:getBoundingBox() 

p> 

p> 

p>然后就可以很简单的使用AABB或者是OBB进行碰撞检测以及设置AI等这些杂七杂八的东西了. 我们都知道序列帧使用的时候就没有那么方便了,在面对.png和Plist这样的组合的时候,动作的处理需要自己去解析,而Boundingbox也需要根据当前执行的动作做状态监测.好吧,废话说的有点多了,我简单实现了部分骨骼实体的封装,代码如下:

p> 

p> 

p> 1 local entity = require "src.firework.entity.entity"

p> 2 

p> 3 local skeleton_entity = class( "skeleton_entity", entity )

p> 4     

p> 5 function skeleton_entity:ctor( armature_const_name )

p> 6     self.skeleton_armature_ = nil

p> 7     self.draw_debug_node_ = nil

p> 8 

p> 9     self.skeleton_armature_ = ccs.Armature:create( armature_const_name )

p>10     self.draw_debug_node_ = cc.DrawNode:create()

p>11     self.skeleton_armature_:addChild( self.draw_debug_node_ )

p>12     self:init_callbacks()        

p>13 end    

p>14 

p>15 function skeleton_entity:play( const_action_name )

p>16     self.skeleton_armature_:getAnimation():play( const_action_name )

p>17 end

p>18 

p>19 function skeleton_entity:init_callbacks()

p>20     self:register_callback( self.draw_debug_bounding_box, self )

p>21 end

p>22 

p>23 function skeleton_entity:set_anchor_point( anchor_point )

p>24     self.skeleton_armature_:setAnchorPoint( anchor_point )

p>25 end

p>26 

p>27 function skeleton_entity:get_anchor_point()

p>28     return self.skeleton_armature_:getAnchorPoint()

p>29 end

p>30 

p>31 function skeleton_entity:set_position( position )

p>32     self.skeleton_armature_:setPosition( position )

p>33 end

p>34 

p>35 function skeleton_entity:get_position()

p>36     return self.skeleton_armature_:getPosition()

p>37 end

p>38 

p>39 function skeleton_entity:add_to_node( node )

p>40     node:addChild( self.skeleton_armature_ )

p>41 end

p>42 

p>43 function skeleton_entity:remove_from_node()

p>44     self:remove_callback( self.draw_debug_bounding_box, self )

p>45     self.skeleton_armature_:getParent():removeChild( self.skeleton_armature_ )

p>46 end

p>47 

p>48 function skeleton_entity:get_bounding_box()

p>49     return self.skeleton_armature_:getBoundingBox()

p>50 end

p>51 

p>52 function skeleton_entity:draw_debug_bounding_box( dt )

p>53     local bounding_box = self:get_bounding_box()

p>54     local lb = self.skeleton_armature_:convertToNodeSpace( cc.p( bounding_box.x, bounding_box.y ) )

p>55     local lt = self.skeleton_armature_:convertToNodeSpace( cc.p( bounding_box.x, bounding_box.y + bounding_box.height ) )
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • Cocos2d-x学习(一):HelloWorld
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d 设置屏幕默认方向
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
  • cocos2d-x学习笔记(15)--地图的使用(TMX)
  • cocos2dx在xcode下开发,编译到android上(2)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1