cocos3 10 lua 碰撞檢測的使用

2021-08-10 22:09:00 字數 988 閱讀 2510

判斷觸控點是否在a的矩形中:
function alayer:ontouchbegan(t,e)

local ptouch = self:converttouchtonodespace(t)

if cc.rectcontainspoint(a:getboundingbox(),ptouch) then

dosomething()

end-- body

end

官方的c++的api有下面幾個:

注意和lua的方法名有點區別,lua的方法名在cocos2d.lua的這個檔案裡就能搜到。像這樣:

function cc.rectintersectsrect( rect1, rect2 )

local intersect = not ( rect1.x > rect2.x + rect2.width or

rect1.x + rect1.width < rect2.x or

rect1.y > rect2.y + rect2.height or

rect1.y + rect1.height < rect2.y )

以下是乙個示例,因為使用的每一幀都呼叫下碰撞檢測,所以log輸出很快。

先創造2個精靈,拖動乙個精靈,每一幀都判斷2個精靈是否相交,輸出結果:

上圖中做碰撞的函式主要是alayer:getbound()。他每次都取ch1和ch2的矩形,使用cc.rectintersectsrect()方法來判斷碰撞,返回bool值。

更優秀的碰撞檢測可以參考:

cocos碰撞檢測

兩個矩形的碰撞檢測,主要看boundingbox是否接觸 rect rc1 spriteauto getboundingbox rect rc2 spritectrl getboundingbox if rc1.intersectsrect rc2 則認為碰撞 兩個圓的碰撞檢測,看圓心距離 poin...

lua實現cocos多邊形碰撞檢測

定義幾個資料型別和函式 function vec x,y return endv vec shortcut function dot v1,v2 return v1 1 v2 1 v1 2 v2 2 endfunction normalize v local mag math.sqrt v 1 2 ...

碰撞檢測 膠囊體碰撞檢測

膠囊體 給定一條線段l,所有道l的距離為r的點的集合。由定義可知,膠囊體由半徑r和線段l標識。檢測兩個膠囊體是否發生碰撞,即檢測兩條線段l1 l2的最短距離d是否大於l1 l2的半徑r1 r2之和,d r1 r2 則未碰撞,否則發生碰撞。設線段l1端點為a1 a2,線段l2端點為b1 b2,號表示兩...