From 98338594b535c446f146184a9f9ede965fdd3689 Mon Sep 17 00:00:00 2001 From: march3 Date: Mon, 12 Jun 2023 14:52:00 +0800 Subject: [PATCH] =?UTF-8?q?Python=E8=B6=85=E4=BA=BA-=E5=AE=87=E5=AE=99?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sim_scenes/solar_system/sun_future_evolution.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sim_scenes/solar_system/sun_future_evolution.py b/sim_scenes/solar_system/sun_future_evolution.py index cdcabc6..58b28db 100644 --- a/sim_scenes/solar_system/sun_future_evolution.py +++ b/sim_scenes/solar_system/sun_future_evolution.py @@ -8,7 +8,7 @@ # ============================================================================== from bodies import Sun, Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, Moon, Asteroids from common.consts import SECONDS_PER_WEEK, SECONDS_PER_DAY, SECONDS_PER_YEAR, AU -from sim_scenes.func import mayavi_run, ursina_run +from sim_scenes.func import mayavi_run, ursina_run, two_bodies_colliding from simulators.ursina.entities.body_timer import TimeData from simulators.ursina.ursina_config import UrsinaConfig from simulators.ursina.ursina_event import UrsinaEvent @@ -42,6 +42,8 @@ if __name__ == '__main__': for idx, body in enumerate(bodies): body.rotation_speed /= 200 # 恒星的旋转速度减小10倍 + planets = bodies[1:] + def on_timer_changed(time_data: TimeData): # 模拟要爆炸的样子 @@ -52,6 +54,16 @@ if __name__ == '__main__': else: scale_val = 0 + # 必须 range(len(planets) - 1, -1, -1) ,才能 remove + for idx in range(len(planets) - 1, -1, -1): + planet = planets[idx] + # 判断行星与太阳是否相碰撞 + if two_bodies_colliding(planet, sun): + planet.explode(sun) + # 必须 range(len(planets) - 1, -1, -1) ,才能 remove + planets.remove(planet) + scale_val = 0 + sun.planet.init_scale += scale_val -- GitLab