码迷,mamicode.com
首页 > 其他好文 > 详细

2d游戏中的射线与矩形检测碰撞

时间:2015-09-17 19:35:41      阅读:509      评论:0      收藏:0      [点我收藏+]

标签:

 cc.exports.LineCollideRect(startLine,endLine,rect)--向量与矩形检测碰撞

  --获取矩形的四个顶点位置

    local p = {cc.p(rect.x,rect.y),cc.p(rect.x + rect.width,rect.y),cc.p(rect.x+rect.width,rect.y + rect.height),cc.p(rect.x,rect.y+rect.height)}

    local bRight = PointPosInVector(startLine,endLine,p[1])--记录矩形的第一个点在射线的左边还是右边

    for i = 2,4 do--遍历其他三个点

        if bRight ~= PointPosInVector(startLine,endLine,p[i]) then--如果其他顶点跟第一个顶点的左右边不相同,则说明射线与矩形碰撞到

            return true

        end

    end

    return false

end

 

function cc.exports.PointPosInVector(startPos,endPos,v)--判断点在向量的左右侧,true为左侧,false为右侧,startPos是向量的起点,endPos是向量的终点,v是顶点

    if (startPos.x - v.x)*(endPos.y - v.y) - (startPos.y - v.y) * (endPos.x - v.x) > 0 then

        return true

    end

    return false

end

 

技术分享

2d游戏中的射线与矩形检测碰撞

标签:

原文地址:http://www.cnblogs.com/HemJohn/p/4817029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!