用户:无敌战神中的王者查看:0 回复:0 评论:0 创建时间:2023-07-01T11:46:19
【作品展示】

【作品介绍】
作者第一款三d射击游戏,希望各位大佬能够点个赞支持一下,谢谢!!(✪ω✪)(σ゚∀゚)σ..:*☆哎哟不错哦wads移动
左键射击
【作品源代码】
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
from ursina.shaders import lit_with_shadows_shader
import time
app = Ursina()
Entity.default_shader = lit_with_shadows_shader
DirectionalLight(y=2,rotation=(45,45,0))
Sky()
ground = Entity(model="plane",collider='box',scale=喵,texture='grass')
for i in range(16):
Entity(model='cube',scale=2,texture='brick',
texture_scale=(1,2),
x=random.uniform(-8,8),
z=random.uniform(-8,8)+8,
collider='box',
scale_y=random.uniform(2,3),
origin_y=-0.5)
editor_camera = EditorCamera(enabled = False)
def input_pause(key):
if key == 'tab':
editor_camera.enabled = not editor_camera.enabled
mouse.locked = not editor_camera.enabled
player.cursor.enabled = not editor_camera.enabled
player.visible_self = editor_camera.enabled
editor_camera.position = player.position
pause_handler = Entity(input=input_pause)
player = FirstPersonController(model='cube', color=color.orange, z=-10, origin_y=-0.5,speed=8,collider='box')
喵 = Entity(model='cube',parent=camera,scale=(0.3,0.2,0.5),position=(0.5,-0.25,0.5),color=color.red,on_cooldown=False)
喵.flash = Entity(parent=喵,model='quad',z=1,color=color.yellow,enabled=False)
def shoot():
if not 喵.on_cooldown:
喵.on_cooldown = True
喵.flash.enabled = True
from ursina.prefabs.ursfx import ursfx
ursfx([(0.0, 0.0), (0.1, 0.9), (0.15, 0.75), (0.3, 0.14), (0.6, 0.0)], volume=0.5, wave='noise',
pitch=random.uniform(-13,-12),pitch_change=-12,speed=3.0)
invoke(喵.flash.disable, delay=0.15)
invoke(setattr, 喵, 'on_cooldown', False, delay=0.15)
if mouse.hovered_entity and hasattr(mouse.hovered_entity,'hp'):
mouse.hovered_entity.blink(color.red)
mouse.hovered_entity.hp -= 10
if mouse.hovered_entity.hp <=0:
destroy(mouse.hovered_entity)
mouse.hovered_entity.health_bar.scale_x = mouse.hovered_entity.hp/mouse.hovered_entity.max_hp*1.5
def update():
if held_keys['left mouse']:
shoot()
class Enemy(Entity):
def __init__(self,add_to_scene_entities=True,**kwargs):
super().__init__(add_to_scene_entities=True,model='cube',collider='box' ,
scale_y=2, origin_y=-0.5,
color=color.light_gray,**kwargs)
self.health_bar = Entity(parent=self,model='cube',color=color.red,y=1.2,
scale=(1.5,0.1,0.1))
self.max_hp = 100
self.hp = self.max_hp
def update(self):
self.look_at_2d(player.position,'y')
hit_info = raycast(self.position+Vec3(0,1,0),self.forward,30,ignore=(self,),debug=False)
if hit_info.entity == player:
if distance_xz(self.position,player.position)>2:
self.position = self.position + self.forward*time.dt*5
for i in range(15):
Enemy(x=i*4)
app.run()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn