diff --git a/objs/__init__.py b/objs/__init__.py index 650c44f1ddea3770b954021073b54f09919ddf77..0addc7773a66757eac9a2656e983b23fbd928f1e 100644 --- a/objs/__init__.py +++ b/objs/__init__.py @@ -9,3 +9,4 @@ from objs.rock import Rock, create_rock from objs.core_valaga_clas import CoreValagaClas from objs.sci_fi_bomber import SciFiBomber from objs.water_drop import WaterDrop +from objs.sci_fi_gunship import ScifiGunship diff --git a/sim_scenes/fiction/show_all_objs.py b/sim_scenes/fiction/show_all_objs.py new file mode 100644 index 0000000000000000000000000000000000000000..e778697391e3ffd91152c63f6ba8b9ce5b896406 --- /dev/null +++ b/sim_scenes/fiction/show_all_objs.py @@ -0,0 +1,79 @@ +# -*- 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 + )