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

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

我游戲中的圓形碰撞比圖像略大

我游戲中的圓形碰撞比圖像略大

Go
肥皂起泡泡 2023-06-19 15:18:06
我正在使用名為 Pixel 的簡單渲染框架在我的 Go 游戲中實現循環碰撞。碰撞適用于像繪制的圓圈這樣的形狀但是當我嘗試將它與圖像而不是渲染形狀一起使用時,它認為它在到達圖像之前會發生輕微碰撞。圖像越大,誤差越大。這是它在圖像上發生碰撞的地方:較小的圖像:大圖:碰撞是這樣完成的:[s 是太陽能電池板,在“小圖”中看到,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每個圖像的 size.X 和 size.Y 是相同的,因為它是一個圓中心計算正確并且這條精確的線適用于形狀[你可以在第一張圖片中看到黃色輪廓,這就是它適用的形狀。]難道我做錯了什么?在計算與圖像本身無關的情況下,為什么會出現這樣的錯誤呢?這是圖像的渲染方式,我認為問題出在某種程度上:[g 是發電機,見“大圖”func (g Generator) render(win *pixelgl.Window, imd *imdraw.IMDraw) {    mat := pixel.IM.        Moved(g.center)    g.sprite.Draw(win, mat)}形狀也是根據它的中心繪制的。
查看完整描述

1 回答

?
慕斯709654

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

如果兩個碰撞物體都是半徑為 R1 和 R2 的圓,則碰撞發生在

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?

這兩個原因一起可能會導致所描述的行為(當中心距離變得等于s邊大小時碰撞條件觸發)


查看完整回答
反對 回復 2023-06-19
  • 1 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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