第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

解決 2D 碰撞

解決 2D 碰撞

慕斯709654 2023-04-14 15:08:42
我正在制作游戲并且可以檢測(cè)碰撞。我現(xiàn)在需要解決它們。我想要的是重疊 x 和 y 以便我可以否定它。獲得重疊的形狀。圓與圓。圓形和矩形。注意不需要旋轉(zhuǎn)。關(guān)于堆棧溢出有一些答案,但沒(méi)有一個(gè)是我想要的。我只需要重疊 x 和 y,僅此而已。
查看完整描述

1 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊

AABB 對(duì)比 AABB

我記得幾年前在制作我的第一款涉及一點(diǎn)物理的游戲時(shí)為此苦苦掙扎。我在互聯(lián)網(wǎng)上找不到任何相關(guān)信息,所以我制作了自己的算法。

您可以在函數(shù)中找到它AABB::detectCollision()。此函數(shù)檢測(cè) 2 個(gè) AABB 之間的重疊和碰撞邊。我知道,它是 C++ 而不是 JS,但我相信您能夠?qū)⑺胺g”成 JS。

請(qǐng)記住,在不考慮兩個(gè)物體的速度的情況下檢測(cè)碰撞永遠(yuǎn)不會(huì)非常精確,并且不會(huì)在高速下工作。

圓與圓

對(duì)于圓,就簡(jiǎn)單多了。

假設(shè)您有 2 個(gè)相交的圓圈:一個(gè)“固定”圓圈A和一個(gè)移動(dòng)圓圈B

兩個(gè)圓之間的重疊是通過(guò)計(jì)算它們之間的距離并減去它們的半徑之和來(lái)計(jì)算的:

overlap = magnitude(A.pos - B.pos) - (A.radius + B.radius)

碰撞法線(碰撞需要解決的方向)是通過(guò)歸一化兩個(gè)圓圈之間的增量來(lái)計(jì)算的:

direction = normalize(B.pos - A.pos) // An arrow pointing from A to B

然后你通過(guò)添加到由重疊縮放的方向的位置B來(lái)移出。AB

B.position += direction * overlap


查看完整回答
反對(duì) 回復(fù) 2023-04-14
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)