cocos2dx像素碰撞检测

现在我有一张矩形的图片 实际看到的部分小于图片的大小 如下
我只想碰到人物与滑板的时候才算碰撞 现在的情况是其他物体在矩形边缘就算碰撞了 我用的是boundingBox

自己绑定一个Rect 。。。

boundingbox是包围盒,当然会这样了,要么上物理引擎,在cocostudio中画碰撞区域,要么自己弄一个rect检测相交

http://blog.csdn.net/xiebaochun/article/details/26455027

虽然我还没有看懂,但是应该是你想要的东西:865:

楼上说的方法都可以 但是最精确的是像素检测 我在网上找的http://discuss.cocos2d-x.org/t/pixel-collision-detection-for-v3-x/17680/16 这个能用
下面是要用到的文件共四个
PixelCollision.cpp PixelCollision.h SolidColorShader.fsh SolidColorShader.vsh
网盘下载:链接: http://pan.baidu.com/s/1qWkNJuk 密码: dyup
使用方法:PixelCollision.cpp PixelCollision.h放到项目Classes文件夹 后面那两个文件下载时是在Shaders文件夹里面 所以把Shaders放到项目Resources文件夹
用到时候
if (PixelCollision::getInstance()->collidesWithSprite(sp1, sp2, true) == true){
log("%s",""碰到了);
}
谢谢大家的帮助
我用的是3.6版本

嗯 这个方法我也看过 后来用到是像素检测 谢谢了

楼主为什么不考虑用物理引擎来检测碰撞呢?像素碰撞检测的效率是个问题

物理引擎可以除掉透明区域?

并不能自动删掉透明区域,但是你可以为Sprite添加一个多边形的物理模型,把不透明的地方用多边形包裹起来,用于检测碰撞
可以参考一下这个帖子:http://www.cocoachina.com/bbs/read.php?tid=209290

射线法检查碰撞,以前flash经常用的,叫你用物理引擎估计嫌麻烦。 给你一段lua代码的思路, 自己封装一个方法,方便易用

local arg = {} --这是碰撞的矩形坐标队列
    local point = {x.=5,y=10}  --需要检测的点,一般是你们的触摸点
    local len,count,p1,p2 = #arg ,0,nil,nil

for i = 1,len do
    p1 = arg*
    if i == len then
        p2=arg
    else
        p2=arg*
    end

    if p1.y == p2.y --p1p2 与 y=p0.y平行
        or
        point.y < math.min(p1.y,p2.y) --交点在p1p2延长线上
        or
        point.y >= math.max(p1.y,p2.y) --交点在p1p2延长线上
    then

    else
        --交点的 X 坐标
        local x=(point.y-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x
        if x > point.x then --向右水平方向发射射线
            count = count + 1
        end
    end
end

if count%2 == 1 then
    return true
end
return false**

好的我试试效率更高的碰撞检测