Взрыв частиц (Particle Burst)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

В то время как SnowBlossom полезен для общего падения частиц, вы можете захотеть создать взрыв частиц. Данный эффект полезен при взрыве предметов или имитации искр при воздействие стали о сталь.

Ниже представлен класс Factory, создающий взрыв частиц.

init:
    python:
        class ExplodeFactory: # класс Factory, который делает частицы
            
            def __init__(self, theDisplayable, explodeTime=0, numParticles=20):
                self.displayable = theDisplayable
                self.time = explodeTime
                self.particleMax = numParticles
theDisplayable
Отображаемый объект или имя изображения, которое вы хотите использовать для частиц.
explodeTime
Время взрыва, чтобы продолжить испускать частицы.
numParticles
Ограничение количества частиц на экране.

Вот пример того, как использовать класс Factory. Поместите следующий код в блок инициализации:

    image boom = Particles(ExplodeFactory("star.png", numParticles=80, explodeTime = 1.0))

Тогда можешь просто добавить в код show boom, чтобы показать взрыв частиц.

Вот и остальная часть вышеуказанного кода с классом Factory:

            
            def create(self, partList, timePassed):
                newParticles = None
                if partList == None or len(partList) < self.particleMax:
                    if timePassed < self.time or self.time == 0:
                        newParticles = self.createParticles()
                return newParticles
                
            
            def createParticles(self):
                timeDelay = renpy.random.random() * 0.6
                return [ExplodeParticle(self.displayable, timeDelay)]
            
            def predict(self):
                return [self.displayable]

init:
    python:        
        class ExplodeParticle:
            
            def __init__(self, theDisplayable, timeDelay):
                self.displayable = theDisplayable
                self.delay = timeDelay
                self.xSpeed = (renpy.random.random() - 0.5) * 0.02
                self.ySpeed = (renpy.random.random() - 0.5) * 0.02
                self.xPos = 0.5
                self.yPos = 0.5
            
            def update(self, theTime):
                
                if (theTime > self.delay):
                    self.xPos += self.xSpeed
                    self.yPos += self.ySpeed
                    
                    if self.xPos > 1.05 or self.xPos < -1.05 or self.yPos > 1.05 or self.yPos < -1.05:
                        return None
                
                return (self.xPos, self.yPos, theTime, self.displayable)

Источник[править | править код]

Статья "Particle Burst" на английском языке


На главную страницу Книга рецептов Энциклопедии Ren'Py Книга рецептов Ren'Py Вернуться к началу статьи