ios OC版本彈幕碰撞檢測

2021-08-09 08:52:33 字數 898 閱讀 1598

網上找了好多彈幕demo,發現很多都會重疊,體驗很不好。所以在參考部分網上彈幕原始碼的基礎上,遂有了本篇彈幕碰撞檢測。

本彈幕優點如下(這個是最初版本,以後慢慢優化):

一. 可以很好的避免彈幕間的碰撞

其實針對碰撞,主要解決水平運動時,前後兩個彈幕不碰撞就可以了。

所以我們主要針對同乙個軌道上,前後彈幕是否碰撞展開研究,就可以了。

倘若剛剛生產的彈幕,在同一軌道上會發生碰撞,我們就選擇下乙個軌道再進行判斷,直到找到不發生碰撞的軌道。(此處可能會有極少彈幕丟失,以後再優化)

1. 當前乙個彈幕的執行時間變成0時(此處我們預設每乙個彈幕的執行時間是5s),也就說明前乙個彈幕已經移動到螢幕外面了,後乙個彈幕可以發**。

2.當前乙個彈幕的執行時間大於0時,我們判斷前乙個彈幕是否完全進入螢幕,倘如完全進入螢幕的話,接著判斷後乙個彈幕是否能追得上前乙個彈幕(是否發生碰撞)。

3.當前乙個彈幕的執行時間大於0時,我們判斷前乙個彈幕是否完全進入螢幕,倘如未完全進入螢幕的話,判斷下乙個軌道(從1開始)。

我們假定彈幕的執行時間是5s,彈幕向前走一步,時間減少0.2s。

具體判斷**如下:

二.彈幕重用,避免記憶體急劇增大

三. demo截圖

碰撞檢測 膠囊體碰撞檢測

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

Unity碰撞檢測

碰撞個必要條件為兩個角色必須都掛載 rigibody 剛體元件,至少乙個角色掛載 collider指令碼 第一種 觸發器,必須開啟 collider的 istrigger 為 true 兩個碰撞物件會相互穿過 void ontriggerenter collider collider 開始觸發器 v...

cocos碰撞檢測

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