我正在使用名為 Pixel 的簡(jiǎn)單渲染框架在我的 Go 游戲中實(shí)現(xiàn)循環(huán)碰撞。碰撞適用于像繪制的圓圈這樣的形狀但是當(dāng)我嘗試將它與圖像而不是渲染形狀一起使用時(shí),它認(rèn)為它在到達(dá)圖像之前會(huì)發(fā)生輕微碰撞。圖像越大,誤差越大。這是它在圖像上發(fā)生碰撞的地方:較小的圖像:大圖:碰撞是這樣完成的:[s 是太陽(yáng)能電池板,在“小圖”中看到,p 是玩家。]math.Pow(math.Pow(s.center.X-p.center.X, 2)+math.Pow(s.center.Y-p.center.Y, 2), 0.5) <= s.size.X每個(gè)圖像的 size.X 和 size.Y 是相同的,因?yàn)樗且粋€(gè)圓中心計(jì)算正確并且這條精確的線適用于形狀[你可以在第一張圖片中看到黃色輪廓,這就是它適用的形狀。]難道我做錯(cuò)了什么?在計(jì)算與圖像本身無(wú)關(guān)的情況下,為什么會(huì)出現(xiàn)這樣的錯(cuò)誤呢?這是圖像的渲染方式,我認(rèn)為問題出在某種程度上:[g 是發(fā)電機(jī),見“大圖”func (g Generator) render(win *pixelgl.Window, imd *imdraw.IMDraw) { mat := pixel.IM. Moved(g.center) g.sprite.Draw(win, mat)}形狀也是根據(jù)它的中心繪制的。
1 回答

慕斯709654
TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果兩個(gè)碰撞物體都是半徑為 R1 和 R2 的圓,則碰撞發(fā)生在
math.Pow(math.Pow(s.center.X-p.center.X, 2)+math.Pow(s.center.Y-p.center.Y, 2), 0.5) <= s.radius + p.radius
什么是s.size
圖像方邊?在這種情況下,您必須使用size/2
獲取半徑。
你為什么忽略的大小/半徑p
?
這兩個(gè)原因一起可能會(huì)導(dǎo)致所描述的行為(當(dāng)中心距離變得等于s
邊大小時(shí)碰撞條件觸發(fā))
- 1 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報(bào)
0/150
提交
取消