Pygame - изменение формы / перемещение прямоугольника столкновения. для спрайта - PullRequest
0 голосов
/ 27 мая 2020

У меня есть анимация спрайта pygame, в которой положение и форма спрайта меняются на протяжении определенной последовательности анимации (например, - атака). Как мне настроить прямоугольник спрайта на столкновения?

Мое изображение: в одной части анимации мой спрайт находится в центре файла изображения png (96x64 пикселей). В другой части анимации мой спрайт находится рядом с правой стороной файла изображения png (96x64 пикселей). В другой части анимации спрайт меняет форму (из-за движения меча). Et c.

Нужно ли мне делать некоторые математические вычисления и вычисления, чтобы настроить прямоугольник столкновения. спрайта в каждом кадре анимации или есть более простой способ? Я новичок в pygame, поэтому я не уверен во всех различных функциях и не уверен, с чего начать создание различных прямоугольников. за каждый кадр.

PS. Я использую готовый спрайт, который нашел в сети - каждый кадр имеет размер 96x64 пикселей

Кадр 1, 11, 22:

enter image description here enter image description here enter image description here

1 Ответ

1 голос
/ 27 мая 2020

Прошло много времени с тех пор, как я работал с Pygame, но я считаю, что вы можете использовать объект pygame.mask. Маска - это в основном объект с точным контуром переднего плана изображения. Это требует значительно большей вычислительной мощности, но если вы создаете маску только для одного главного персонажа, все должно быть в порядке. Вы можете создать маску из изображения:

myMask = pygame.mask(myImage)

Затем вы можете использовать его прямоугольник или создать новую поверхность для использования:

myRect = myMask.get_rect()  # Returns the pygame.Rect object that conatains mask, or:
mySurface - myMask.to_surface()  # Returns a pygame.Surface object of the mask

Надеюсь, это поможет, моя информация взята из :

https://www.pygame.org/docs/ref/mask.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...