python ursina跑酷游戏

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自己找图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值