Я реализую круговое столкновение в моей игре, созданной в Go, с использованием простой среды рендеринга Pixel.
Столкновение отлично работает с фигурами , как нарисованный круг
Но когда я пытаюсь использовать его с изображением, а не с визуализированной формой, он думает, что слегка сталкивается, прежде чем достигает изображения. Чем больше изображение, тем больше ошибка.
Вот где он сталкивается на изображениях:
Меньшее изображение:
Увеличенное изображение:
Столкновение сделано так:
[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
Размер. X и размер. Y каждого изображения одинаковы, так как это круг
Центры рассчитаны правильно, и эта точная линия работает с фигурами [вы можете увидеть желтый контур на первом изображении, это форма, с которой он работает.]
Я что-то не так делаю? Почему это может быть вызвано ошибкой, если расчет не имеет отношения к самому изображению?
Вот как изображения отображаются, я полагаю, что проблема как-то с этим связана:
[g - генератор, видно на «увеличенном изображении»
func (g Generator) render(win *pixelgl.Window, imd *imdraw.IMDraw) {
mat := pixel.IM.
Moved(g.center)
g.sprite.Draw(win, mat)
}
Форма рисуется также по центру.