From 3936b57529b4b3243cf78d908f1cb30cede98778 Mon Sep 17 00:00:00 2001 From: march3 Date: Wed, 15 Nov 2023 21:09:03 +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 --- simulators/ursina/entities/ursina_demo.py | 78 ++++++++++++++++++----- 1 file changed, 62 insertions(+), 16 deletions(-) diff --git a/simulators/ursina/entities/ursina_demo.py b/simulators/ursina/entities/ursina_demo.py index dee54bc..ccc8cfb 100644 --- a/simulators/ursina/entities/ursina_demo.py +++ b/simulators/ursina/entities/ursina_demo.py @@ -8,22 +8,42 @@ texture = load_texture("../../../objs/textures/core_valaga_clas.jpg") camera_ship = Entity(model="../../../objs/models/core_valaga_clas.obj", texture=texture, double_sided=True) -shperes = [] +bullets = [] +targets = [] +target1 = Entity( + # model="sphere", + model="../../../objs/models/drops.obj", + texture=load_texture("../../../objs/textures/rock_snow.jpg"), + collider='box', + position=Vec3(0, 0, 26000), scale=900) +targets.append(target1) -def create_sphere(): - shpere_l = Entity( +target2 = Entity( + # model="sphere", + model="../../../objs/models/drops.obj", + texture=load_texture("../../../objs/textures/rock_snow.jpg"), + collider='box', + position=Vec3(-8000, 0, 26000), scale=900) + +targets.append(target2) + + +def create_bullets(): + bullet_l = Entity( # model="sphere", - model="../../../objs/models/drops.obj", - texture=load_texture("../../../objs/textures/rock_snow.jpg"), - position=camera_ship.position+Vec3(-260,0,0), scale=500) - shperes.append(shpere_l) - shpere_r = Entity( + model="../../../objs/models/drops.obj", + texture=load_texture("../../../objs/textures/rock_snow.jpg"), + collider='box', + position=camera_ship.position + Vec3(-260, 0, 0), scale=500) + bullets.append(bullet_l) + bullet_r = Entity( # model="sphere", model="../../../objs/models/drops.obj", texture=load_texture("../../../objs/textures/football.jpg"), - position=camera_ship.position+Vec3(260,0,0), scale=500) - shperes.append(shpere_r) + collider='box', + position=camera_ship.position + Vec3(260, 0, 0), scale=500) + bullets.append(bullet_r) # camera.parent = camera_ship.planet @@ -42,18 +62,44 @@ camera.rotation_x = 10 # application.time_scale = 1 def update(): - camera_ship.position += Vec3(0, 0, 10) - camera_ship.rotation_y += 0.01 + camera_ship.position += camera_ship.forward * 2 + # camera_ship.rotation_y += 0.01 # camera.position = Vec3(0, 1000, -1000) - for shpere in shperes: - shpere.rotation_y = camera_ship.rotation_y - shpere.position += shpere.forward * 10 + destroy_bullets = [] + destroy_targets = [] + for bullet in bullets: + bullet.rotation_x = camera_ship.rotation_x + bullet.rotation_y = camera_ship.rotation_y + bullet.rotation_z = camera_ship.rotation_z + bullet.position += bullet.forward * 3 + for target in targets: + if bullet.intersects(target): + if target not in destroy_targets and bullet not in destroy_bullets: + destroy_bullets.append(bullet) + destroy_targets.append(target) + + for i in range(len(destroy_targets) - 1, -1, -1): + targets.remove(destroy_targets[i]) + destroy(destroy_targets[i]) + + for i in range(len(destroy_bullets) - 1, -1, -1): + bullets.remove(destroy_bullets[i]) + destroy(destroy_bullets[i]) + + if held_keys['a']: + camera_ship.rotation_y -= 0.03 + if held_keys['d']: + camera_ship.rotation_y += 0.03 + if held_keys['w']: + camera_ship.rotation_x -= 0.03 + if held_keys['s']: + camera_ship.rotation_x += 0.03 def input(key): print(key) if key == "space": - create_sphere() + create_bullets() # player = FirstPersonController() -- GitLab