Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как добавить частицы в код на Python

Василий Дубинин Знаток (452), закрыт 1 год назад
помогите пожалуйста, я уже 2 дня не могу добавить частицы в этот код:
 import arcade 
from arcade.experimental.lights import Light, LightLayer
screen_width = 1024
screen_height = 768
screen_title = "My Game"
movement_speed = 5
viewport_margin = 200
ambient_color = (10, 10, 10)
class MyGame(arcade.Window):
def __init__(self,width,height,title):
super().__init__(width,height,title,resizable=True)
self.background_sprite_list = None
self.player_list = None
self.wall_list = None
self.player_sprite = None
self.physics_engine = None
self.view_left = 0
self.view_bottom = 0
self.light_layer = None
self.player_light = None
def setup(self):
self.background_sprite_list = arcade.SpriteList()
self.player_list = arcade.SpriteList()
self.wall_list = arcade.SpriteList()
self.player_sprite = arcade.Sprite("femalePerson_idle.png",scale = 0.4)
self.player_sprite.center_x = 64
self.player_sprite.center_y = 270
self.player_list.append(self.player_sprite)
for x in range(-128,2000,128):
for y in range(-128,1000,128):
sprite =arcade.Sprite(r'brickTextureWhite.png')
sprite.position = x,y
self.background_sprite_list.append(sprite)
self.physics_engine = arcade.PhysicsEngineSimple(self.player_sprite,self.wall_list)
self.view_left = 0
self.view_bottom = 0
self.light_layer = LightLayer(screen_width,screen_height)
self.light_layer.set_background_color(arcade.color.BLACK)
radius = 150
mode = 'soft'
color = arcade.csscolor.WHITE
self.player_light = Light(0,0,radius,color,mode)
def on_draw(self):
self.clear()
with self.light_layer:
self.background_sprite_list.draw()
self.player_list.draw()
self.light_layer.draw(ambient_color=ambient_color)
arcade.draw_text("Press SPACE to turn character light on/off.",10+self.view_left,10+self.view_bottom,arcade.color.WHITE,20)
def on_key_press(self, key, modifiers: int):
if key == arcade.key.UP:
self.player_sprite.change_y = movement_speed
elif key == arcade.key.DOWN:
self.player_sprite.change_y = -movement_speed
elif key == arcade.key.LEFT:
self.player_sprite.change_x = -movement_speed
elif key == arcade.key.RIGHT:
self.player_sprite.change_x = movement_speed
elif key == arcade.key.SPACE:
if self.player_light in self.light_layer:
self.light_layer.remove(self.player_light)
else:
self.light_layer.add(self.player_light)
def on_key_release(self, key, modifiers: int):
if key == arcade.key.UP or key == arcade.key.DOWN:
self.player_sprite.change_y = 0
elif key == arcade.key.RIGHT or key == arcade.key.LEFT:
self.player_sprite.change_x = 0
def on_resize(self, width: float, height: float):
self.scroll_screen()
self.view_bottom, self.height + self.view_bottom)
def on_update(self, delta_time: float):
self.physics_engine.update()
self.scroll_screen()
self.player_light.position = self.player_sprite.position
if __name__ == '__main__':
window = MyGame(screen_width,screen_height,screen_title)
window.setup()
arcade.run()
Лучший ответ
больше не чат гпт ???? Мыслитель (9612) 1 год назад
Чтобы добавить частицы в ваш код на Python, вам потребуется использовать библиотеку arcade и её возможности для создания эффектов частиц. Вот пример того, как вы можете внести изменения в ваш код:

1. Импортируйте модуль ParticleSystem из библиотеки arcade:

python
from arcade.particles import ParticleSystem


2. В методе setup() создайте объект ParticleSystem и настройте его параметры:

python
self.particle_system = ParticleSystem("particle_texture.png")

emitter_center_x = 0 # центр эмиттера по оси X
emitter_center_y = 0 # центр эмиттера по оси Y
colors = [(255, 0, 0), (0, 255, 0)] # список цветов частиц
change_xy_range = (-5, 5) # диапазон изменения скорости по осям X и Y

# Создание эмиттера
self.emitter = self.particle_system.create_emitter(
center_xy=(emitter_center_x, emitter_center_y),
emit_controller=arcade.EmitterInterval(0.1),
particle_factory=lambda emitter: arcade.FadeParticle(
filename_or_texture=arcade.make_soft_circle_texture(20, colors[0]),
change_xy=arcade.rand_in_range(change_xy_range[0], change_xy_range[1]),
lifetime=1.0,
start_alpha=255,
end_alpha=0,
),
)

# Запуск эмиттера
self.emitter.start_burst()


Здесь particle_texture.png - это текстура, которая будет использоваться для отображения частиц. Вы можете заменить это на свою собственную текстуру.

3. В методе on_draw() добавьте код для отрисовки частиц:

python
def on_draw(self):
self.clear()

self.particle_system.draw() # добавьте эту строку для отображения частиц

with self.light_layer:
self.background_sprite_list.draw()
self.player_list.draw()
self.light_layer.draw(ambient_color=ambient_color)

arcade.draw_text("Press SPACE to turn character light on/off.", 10+self.view_left, 10+self.view_bottom, arcade.color.WHITE, 20)


4. В методе on_update() добавьте код для обновления частиц:

python
def on_update(self, delta_time: float):
self.particle_system.update() # добавьте эту строку для обновления частиц

self.physics_engine.update()
self.scroll_screen()
self.player_light.position = self.player_sprite.position


5. В методах on_key_press() и on_key_release() добавьте код для включения и отключения эмиттера при нажатии на клавишу пробела:

python
def on_key_press(self, key, modifiers: int):
if key == arcade.key.UP:
self.player_sprite.change_y = movement_speed
elif key == arcade.key.DOWN:
self.player_sprite.change_y = -movement_speed
elif key == arcade.key.LEFT:
self.player_sprite.change_x = -movement_speed
elif key == arcade.key.RIGHT:
self.player_sprite.change_x = movement_speed
elif key == arcade.key.SPACE :
if self.player_light in self.light_layer:
self.light_layer.remove(self.player_light)
self.emitter.stop() # Остановка эмиттера при отключении света у игрока
else:
self.light_layer.add(self.player_light)
self.emitter.start_burst() # Запуск эмиттера при включении света у игрока

def on_key_release(self, key, modifiers: int):
if key == arcade.key.UP or key == arcade.key.DOWN:
self.player_sprite.change_y = 0
elif key == arcade.key.RIGHT or key == arcade.key.LEFT:
self.player_sprite.change_x = 0


Убедитесь, что у вас имеется текстура particle_texture.png и что путь к ней верен. После внесения этих изменений вы должны увидеть эффект частиц при включении света у игрока.
Остальные ответы
Oldi Искусственный Интеллект (163467) 1 год назад
Не можешь всего 2 дня, научись и перестань клянчить
Терр Онтал Мудрец (14615) 1 год назад
Какие частицы. Твой код невозможно читать, он плохо написан и скорее всего ещё хуже работает
Похожие вопросы