Я хочу запустить отдельную анимацию для способности, а не для основной, потому что у меня есть отдельный персонаж, которого я использую и для врагов, и для героя, но я не могу понять, почему не запускается отдельная анимация способности
см. код @@@@@@@@@
class Slash(pygame.sprite.Sprite):
def __init__(self, x, y, direction):
pygame.sprite.Sprite.__init__(self)
self.speed = 7
self.image = slash_img
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.direction = direction
def update(self):
#move slash
self.rect.x += (self.direction * self.speed)
#check if slash has gone off screen
if self.rect.right < 0 or self.rect.left > SCREEN_WIDTH:
self.kill()
#check collision with characters
if pygame.sprite.spritecollide(enemy, slash_group, False):
if enemy.alive:
enemy.health -= 25
self.kill()
class Slash_attack(pygame.sprite.Sprite):
def __init__(self, x, y, direction, scale):
pygame.sprite.Sprite.__init__(self)
self.update_time = pygame.time.get_ticks()
self.images = []
for num in range(1, 5):
img = pygame. image.load(f'img/slash/slash{num}.png').convert_alpha()
img = pygame.transform.scale(img, (int(img.get_width() * scale), int(img.get_height() * scale)))
self.images.append(img)
self.frame_index = 0
self.image = self.images[self.frame_index]
self.rect = self.image.get_rect()
self.rect.center = (x, y)
self.counter = 0
def update(self):
#update animation
SLASH_COOLDOWN = 100
#update image depending on the current frame
self.image = self.images[self.frame_index]
# If the animation has run out, reset to the start or keep at the last frame
self.counter += 1
if self.counter >= SLASH_COOLDOWN:
self.counter = 0
self.frame_index += 1
# If the animation has finished, kill the slash
if self.frame_index >= len(self.images):
self.kill() # remove the slash attack sprite
else:
self.frame_index = 0
Подробнее здесь: https://stackoverflow.com/questions/793 ... ite-sprite
Анимация не работает pygame, pygame.sprite.Sprite ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение