亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript:碰撞檢測

Javascript:碰撞檢測

牛魔王的故事 2019-07-30 15:06:33
Javascript:碰撞檢測有人可以幫我理解碰撞檢測在JS中是如何工作的嗎?我不能使用jQuery或gameQuery - 已經使用原型 - 所以,我正在尋找一些非常簡單的東西。不要求完整的解決方案,只需指出正確的方向。讓我們說:<div id="ball"></div>and  <div id="someobject0"></div>現在球正在移動(任何方向)?!癝omeobject”(0-X)已經預先定義,其中有20-60個隨機定位如下:#someobject {position: absolute; top: RNDpx; left: RNDpx;}我可以創建一個帶有“someobject(X)”位置的數組,并在“ball”移動時測試碰撞...類似于:for(var c=0; c<objposArray.length; c++){........ and code to check ball's current position vs all objects one by one.... }但我想這將是一個“noob”解決方案,它看起來很慢。有更好的嗎?
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

首先要做的是檢測球與物體之間是否發生碰撞的實際功能。

為了性能起見,實現一些粗略的碰撞檢測技術(例如,邊界矩形)以及在檢測到碰撞時需要更準確的技術將是很好的,這樣您的功能可以更快地運行但是使用完全相同的同樣的循環。

另一個有助于提高性能的選項是使用您擁有的對象進行一些預處理。例如,您可以將整個區域分解為像通用表格一樣的單元格,并存儲特定單元格中包含的相應對象。因此,要檢測碰撞,您將檢測球所占據的細胞,從這些細胞中獲取物體并使用碰撞檢測功能。

為了加快速度,你可以實現2d-tree,quadtree或R-tree。


查看完整回答
反對 回復 2019-07-30
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

這是一個非常簡單的邊界矩形例程。該公司預計雙方ab能與對象x,y,widthheight屬性:

function?isCollide(a,?b)?{
????return?!(
????????((a.y?+?a.height)?<?(b.y))?||
????????(a.y?>?(b.y?+?b.height))?||
????????((a.x?+?a.width)?<?b.x)?||
????????(a.x?>?(b.x?+?b.width))
????);}


查看完整回答
反對 回復 2019-07-30
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

你可以嘗試jquery-collision。完全披露:我剛剛寫了這個并發布了它。沒有找到解決方案,所以我自己寫了。

它允許你做:

var?hit_list?=?$("#ball").collision("#someobject0");

這將返回與“#ball”重疊的所有“#someobject0”。


查看完整回答
反對 回復 2019-07-30
  • 3 回答
  • 0 關注
  • 365 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號