# -*- coding:utf-8 -*- # title :显示所有的三维物体 # description :显示所有的三维物体 # author :Python超人 # date :2023-10-06 # link :https://gitcode.net/pythoncr/ # python_version :3.9 # ============================================================================== import random from objs import * from common.consts import SECONDS_PER_DAY from sim_scenes.func import ursina_run def create_rock(no: int = None, **kwargs): if no is not None: kwargs["model"] = f"rock{no}.obj" kwargs["texture"] = f"rock{no}.png" rock = Rock(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=20000, **kwargs) return rock # 对距离整体进行调整 r = 60000 objs = [] for i in range(8): rock = create_rock(no=i % 8 + 1, name=f'岩石{i + 1}') objs.append(rock) objs += [ Diamond(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=12000), # 钻石 Football(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=20000), # 足球 # Rock(ignore_mass=True, init_velocity=[0, 0, 0],size_scale= 20000), # 岩石 # RockSnow(ignore_mass=True, init_velocity=[0, 0, 0],size_scale= 20000), # 带雪的岩石 Satellite(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=5000), # 卫星 Satellite2(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=5000), # 卫星2 SciFiBomber(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=5), # 飞船 ScifiGunship(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=100), # 飞船 SpaceShip(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=20000), # 太空飞船 StarWarsSpeeder(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=200), # 太空战机 WaterDrop(ignore_mass=True, init_velocity=[0, 0, 0], size_scale=20000), # 水滴 ] def get_objs(): new_objs = [] obj_idx = 0 for x in range(-2, 2): for y in range(0, 1): for z in range(-2, 3): if obj_idx > len(objs) - 1: return new_objs obj = objs[obj_idx] obj_idx += 1 if isinstance(obj, StarWarsSpeeder): obj.init_position = [r * x * 2, r * y, r * z + 50000] else: obj.init_position = [r * x * 2, r * y, r * z] new_objs.append(obj) return new_objs if __name__ == '__main__': # 使用 ursina 查看的运行效果 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # position = 左-右+、上+下-、前+后- ursina_run(get_objs(), SECONDS_PER_DAY, position=(0, 0, -r * 10), show_camera_info=False, show_control_info=False, show_grid=False )