from ursina import * #导入ursina
from ursina.prefabs.first_person_controller import FirstPersonController
import random
import time
from threading import Thread as thread
app=Ursina() #创建一个窗口
player=FirstPersonController(model="sphere",y=10,collider='box')
ttt1=load_texture('pic1.png')
ttt2=load_texture('boom.png')
Sky()
def update():
global position,start_time
if held_keys['1']:
position=player.position
if held_keys['2']:
player.position=position
class ccuubbee(Entity):
def __init__(self,mode,model="cube",position=(1,1-0.5,1),collider='box',scale=(1,1,1),texture=ttt1,rotation_x=0,yyy=0,xxx=0,zzz=0):
global start_time,oolder,hahaha
super().__init__(True,model=model,position=position,collider=collider,color=color.light_gray,scale=scale,texture=texture,rotation_x=rotation_x)
self.mode=mode
self.a=self.y
oolder=1
start_time = time.time()
self.yyy=yyy
self.xxx=xxx
self.zzz=zzz
self.start=False
hahaha=0.1
def update(self):
global ttt1,ttt2,start_time,oolder,player,posoos,hahaha
if self.mode==0:
pass
elif self.mode==1:
self.position = self.position+self.back*time.dt*0.05
elif self.mode==2:
self.rotation_x = self.rotation_x+1*time.dt*1
elif self.mode==3:
def upd_self_mod3():
global ttt1,ttt2,start_time,oolder,player,posoos,hahaha
if player.intersects(self).hit:
self.start=True
if self.start:
elapsed_time = time.time() - start_time
if elapsed_time>hahaha:
if oolder==1:
self.enabled=True
self.texture=ttt1
oolder=2
elif oolder==2:
self.texture=ttt2
oolder=3
elif oolder==3:
posoos=self.position
self.enabled=False
hahaha=1
oolder=4
elif oolder==4:
ccuubbee(3,model="sphere",position=posoos,collider='box')
start_time = time.time()
thread(target=upd_self_mod3).start()
elif self.mode==4:
self.position = self.position+self.forward*time.dt*0.05
elif self.mode==5:
if player.intersects(self).hit:
player.z = player.z-1*time.dt*0.05
elif self.mode==6:
if player.intersects(self).hit:
player.y=self.yyy
player.x=self.xxx
player.z=self.zzz
elif self.mode==7:
if self.hovered:
if self.b:
self.a=Text('hello', world_scale=100)
self.b=False
else:
destroy(self.a)
self.b=True
for z in range(8):
for x in range(2):
ccuubbee(0,model=Plane(),texture='grass',position=(x,0,z),collider='box')
for z in range(8):
for x in range(1):
ccuubbee(5,model=Plane(),texture='grass',position=(x,0,9+z),collider='box')
for z in range(8):
ccuubbee(5,model=Plane(),texture='grass',position=(random.randint(0,1),0,8*2+z),collider='box')
for z in range(8):
ccuubbee(3,model=Plane(),position=(0,0,8*3+z),collider='box')
ccuubbee(5,position=(0,1-0.5,7))
ccuubbee(0,model=Plane(),position=(0,0,8*4),collider='box')
ccuubbee(7,position=(0,0,32+20+1),collider='box')
for i in range(1,10):
ccuubbee(0,model="sphere",position=(0,0,8*4+i*2),collider='box')
for i in range(10,20):
ccuubbee(3,model="sphere",position=(0,0,8*4+i*2),collider='box')
ccuubbee(0,model=Plane(),texture='grass',position=(x,0,z),collider='box')
app.run()
我们先导入了ursina,是外部库,需要安装,有些大,建议使用清华
pic1.png,boom.png自己找图片