創作內容

3 GP

Canvas上的像素碰撞偵測

作者:Hua│2016-02-19 13:26:19│巴幣:6│人氣:345
Canvas上的像素碰撞偵測capx )
- 在畫布上拖曳畫彩色的圓
- 當紅球碰到彩色圓會反彈,並且清除附近一個範圍內的像素


概念
C2內建的碰撞偵測方法是用碰撞框是否交疊判定,但由於canvas上只有像素而沒有固定的碰撞框,所以不能直接用內建方式做碰撞偵測。
像素碰撞偵測的核心做法是,某點位置是否在碰撞框內。但canvas上有大量像素,所以減少檢測的像素數量是必要的。
首先取出物件所在上下左右四邊界內的像素陣列。即不需檢測物件邊界外的像素,以demo來說,會取出40x40大小的像素陣列,共1600個點。
取出像素陣列後,先檢查每點像素的alpha是否為0(表示該點不顯示),不為0再繼續檢測該點位置是否在物件的碰撞框內。如果成立,則檢測到像素碰撞,結束偵測。
由於碰撞框是一個封閉的多邊形,從左上開始依序檢查並不是最快的,我採取的作法是,在像素陣列內隨機取點(一般來說隨機變數是均勻分布的)。並且最多隨機取出總像數量10%,即是160個點做上述的檢測。這160個點都不顯示,或不在物件碰撞框內,就當作沒有碰撞。
碰撞後的反彈角度計算,就不在此詳述了。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3106413
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:隨機|畫布|碰撞偵測

留言共 1 篇留言

深紅
哇嗚,這真是一個有趣的效果,不過在我Win10平板上效能很慘...
當球碰到彩色圓並且要消除時,球會停頓約0.6秒且CPU使用率上升,Over 100%!! MAX CPU:107%
然後小球就被彈出Layout外了lol

ps.上次問您Mini Board能否符合Board上的空值已經完成了,真的是很感謝您的指導,
也謝謝您寫了這麼多的Plugin,再一次的感謝您!

02-19 22:29

Hua
我在new ipad上的fps也掉到30多02-19 22:35
我要留言提醒:您尚未登入,請先登入再留言

3喜歡★rexrainbow 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:在heroku上佈署pa... 後一篇:從Yahoo finan...

追蹤私訊切換新版閱覽

作品資料夾

Charles021來此小屋參觀的觀眾
新篇小說上線,有興趣的觀眾歡迎來看(被學務主任喜歡的壞學生)的最新章節,最新頁數看更多我要大聲說昨天06:34


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】