cocos2d-x 自定义N个碰撞矩形框。

原创 2016年05月30日 15:00:37


--创建碰撞框-- 用于多个部位检测
function MathTools.createCollisionRect(sp, sp_custom)
local sp_t = {
 x = not sp_custom and sp:getPositionX()  or sp_custom.x or sp:getPositionX(),
 y = not sp_custom and sp:getPositionY()  or sp_custom.y or sp:getPositionY() , 
 w = not sp_custom and sp:getContentSize().width or sp_custom.w or sp:getContentSize().width , 
 h = not sp_custom and sp:getContentSize().height  or sp_custom.h or sp:getContentSize().height,
 ap = cc.p(sp:getAnchorPoint())
}
--忽略锚点  等价于 getBoundBox()
  sp_t.x = sp_t.x -  sp_t.w * sp_t.ap.x
  sp_t.y =  sp_t.y -  sp_t.h * sp_t.ap.y


 return sp_t


end


--碰撞检测 矩形   1 个部位 矩形框的大小
function MathTools.isCollisionToRect(sp_t,sp2,is_open_line,layer)
local is_rect = false
local collisionCfg = {}
local collision_id = {}
for __,v in pairs(sp2) do
local sp2 = v
for _,v2 in pairs(sp_t) do
local sp = v2
if is_open_line then
local  function DrawRect()
local rect_1 = cc.DrawNode:create()
rect_1:setName("drect"..rect_1:getTag())
rect_1:drawRect(cc.p(sp.x  , sp.y ),cc.p(sp.w + sp.x ,sp.h + sp.y),cc.c4b(255,100,0,100)) --后期记得加 颜色枚举
layer:addChild(rect_1,999)
local rect_2 = cc.DrawNode:create()
rect_2:setName("drect"..rect_2:getTag())
rect_2:drawRect(cc.p(sp2.x  , sp2.y ),cc.p(sp2.w + sp2.x ,sp2.h + sp2.y),cc.c4b(100,255,0,100)) --后期记得加 颜色枚举
layer:addChild(rect_2,999)
end 
DrawRect()--画框
end

    local is_rect = not ( sp.x > sp2.x + sp2.w or
                   sp.x + sp.w < sp2.x         or
                   sp.y > sp2.y + sp2.h        or
                   sp.y + sp.h < sp2.y )
   
    if is_rect == true then 
    --插入碰撞信息
    table.insert(collision_id ,1,{Language.Common.Collision[_].."->"..Language.Common.Collision[__]})
    table.insert(collisionCfg, 1 , { [1] = true ,[2] = collision_id }) 
    end

end
end
return collisionCfg


end
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

cocos2d-x obb 旋转碰撞 矩形

  • 2015年11月05日 11:07
  • 172KB
  • 下载

cocos2d-x矩形法碰撞检测实例

  • 2014年05月29日 08:35
  • 756KB
  • 下载

cocos2d-x-3.3-019-碰撞检测1-矩形区域是否相交

原文同步发布于我的wiki,查看原文或更新请移步: 点击打开链接 原理 Cocos里面的每个Node都有一个和它对应的矩形区域,通过api getBoundingBox()...

【cocos2d-x 2.x 学习与应用总结】14: 自定义shader绘制混合颜色的矩形

本文介绍了如何在cocos2d-x中使用自定义shader来实现混合颜色矩形的绘制。文中继续使用[前一篇文章中](http://blog.csdn.net/elloop/article/details...
  • elloop
  • elloop
  • 2016年01月25日 23:12
  • 654

cocos2d-x 定义圆形类 进行圆形与方形、圆形与圆形碰撞检测

cocos2d-x 只有Rect(方形)类,也只有方形之间的碰撞检测方法。 圆形是方形以外最常用的形状,也需要与圆形或方形做碰撞检测。于是自定义圆形区域类,代码如下。   CCCir...

Cocos2d-x 自定义实现下拉列表框(两种实现方法)

在引擎中并没有提供相应的下拉列表控件实现,所以如果在实际应用中需要的话就要自己代码实现。   下面我介绍两种实现的方式,以供大家参考。 方法一: 这个方法我是参考了网上的一段代码,然后...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2d-x 自定义N个碰撞矩形框。
举报原因:
原因补充:

(最多只允许输入30个字)