From 628ad79b38b6888405f7f14183e0ade339adb5d5 Mon Sep 17 00:00:00 2001 From: march3 Date: Sat, 9 Dec 2023 21:11: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/featured/eight_stars_alignment.py | 22 +++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/sim_scenes/featured/eight_stars_alignment.py b/sim_scenes/featured/eight_stars_alignment.py index d8e52bb..e7a42d0 100644 --- a/sim_scenes/featured/eight_stars_alignment.py +++ b/sim_scenes/featured/eight_stars_alignment.py @@ -12,7 +12,7 @@ import numpy as np from bodies import Sun, Mercury, Venus, Earth, Mars, Asteroids, Jupiter, Saturn, Uranus, Neptune, Moon from common.celestial_data_service import get_body_posvel, recalc_moon_position, calc_solar_acceleration, \ set_solar_system_celestial_position, set_earth_rotation -from common.consts import SECONDS_PER_WEEK, SECONDS_PER_DAY, SECONDS_PER_HOUR, AU +from common.consts import SECONDS_PER_MONTH, SECONDS_PER_WEEK, SECONDS_PER_DAY, SECONDS_PER_HOUR, AU from sim_scenes.func import ursina_run, create_sphere_sky, two_bodies_colliding from sim_scenes.universe_sim_scenes import UniverseSimScenes from simulators.ursina.entities.body_timer import TimeData @@ -150,11 +150,14 @@ class SolarSystemRealitySim(UniverseSimScenes): # 需要按照时间和日期来控制地球的自转,所以删除控制地球自转的属性 delattr(self.earth.planet, "rotation_speed") delattr(self.earth.planet, "rotspeed") - self.ship.planet.update = lambda: None + # 设置后,可以调整鼠标键盘的控制速度 - application.time_scale = 1 + application.time_scale = 0.01 self.ship.planet.position = self.earth.planet.position + self.ship.planet.update = lambda :None + camera.update = lambda :None + def ship_go_target(self): from ursina import distance @@ -170,7 +173,7 @@ class SolarSystemRealitySim(UniverseSimScenes): # r = d * 10 # if r<100: # r = 100 - r = 500 + r = 20 self.ship.planet.look_at(planet) self.ship.planet.position += self.ship.planet.forward * r @@ -181,14 +184,23 @@ class SolarSystemRealitySim(UniverseSimScenes): self.target_index += 1 planet.arrived = True + + def on_timer_changed(self, time_data: TimeData): """ 事件绑定后,时时刻刻都会触发 @param time_data: @return: """ + from ursina import Vec3 self.ship_go_target() + target = self.targets[self.target_index] + planet = target.planet.main_entity + + camera.look_at(planet) + + camera.position = self.ship.planet.position + Vec3(10, 10, 10) dt = time_data.get_datetime(str(self.start_time)) # 设置天体的位置(包含速度和加速度的信息) self.set_bodies_position(time_data) @@ -272,7 +284,7 @@ if __name__ == '__main__': sim.run( # debug_mode=True, # 是否调试模式 dt=SECONDS_PER_DAY , # 1秒=1天 - # dt=SECONDS_PER_HOUR, # 1秒=1小时 + # dt=SECONDS_PER_WEEK, # 1秒=1周 # dt=SECONDS_PER_HOUR, # 1秒=1小时 start_time='2149-12-10 12:00:00', # 九(八)星连珠的时间 # https://baijiahao.baidu.com/s?id=1654160345900112362 # show_asteroids=True, # 是否显示小行星带(图片模拟) -- GitLab