添加天空、手和聲音 | Python開發(fā) 我的世界Minecraft
2023-02-10 18:56 作者:xiaotiaotiao2011 | 我要投稿

from ursina import * #導入ursina from ursina.prefabs.first_person_controller import FirstPersonController import random app=Ursina() #創(chuàng)建一個窗口 grass_texture=load_texture('assets/grass_block.png') stone_texture=load_texture('assets/stone_block.png') brick_texture=load_texture('assets/brick_block.png') dirt_texture=load_texture('assets/dirt_block.png') sky_texture=load_texture('assets/skybox.png') arm_texture=load_texture('assets/arm_texture.png') punch_sound=Audio('assets/punch_sound.wav',loop=False,autoplay=False) block_pick=1 window.fps_counter.enabled=False window.exit_button.visible=False def update(): global block_pick if held_keys['1']: block_pick=1 if held_keys['2']: block_pick = 2 if held_keys['3']: block_pick = 3 if held_keys['4']: block_pick = 4 if held_keys['left mouse'] or held_keys['right mouse']: hand.active() else: hand.passive() class Block(Button): def __init__(self,position=(0,0,0),texture=grass_texture): super().__init__( parent=scene, position=position, model='assets/block', origin_y=0.5, texture=texture, color=color.color(0,0,random.uniform(0.9,1)), #highlight_color=color.red, scale=0.5 ) def input(self,key): if self.hovered: if key=='left mouse down': punch_sound.play() if block_pick==1: block=Block(position=self.position+mouse.normal,texture=grass_texture) if block_pick==2: block=Block(position=self.position+mouse.normal,texture=stone_texture) if block_pick==3: block=Block(position=self.position+mouse.normal,texture=brick_texture) if block_pick==4: block=Block(position=self.position+mouse.normal,texture=dirt_texture) if key == 'right mouse down': punch_sound.play() destroy(self) class Sky(Entity): def __init__(self): super().__init__( parent=scene, model='sphere', texture=sky_texture, scale=random.randrange(200,300), double_sided=True ) class Hand(Entity): def __init__(self): super().__init__( parent=camera.ui, model='assets/arm', texture=arm_texture, scale=0.2, rotation=Vec3(150,-10,0), position=Vec2(0.7,-0.58) ) def active(self): self.position = Vec2(0.5, -0.53) def passive(self): self.position = Vec2(0.7, -0.58) #會生成幾層 for z in range(10): for x in range(10): for y in range(3): block=Block(position=(x,y,z),texture=stone_texture) for z in range(10): for x in range(10): for y in range(3): block=Block(position=(x,y+3,z),texture=dirt_texture) for z in range(10): for x in range(10): block=Block(position=(x,y+4,z)) player=FirstPersonController(x=0,y=100,z=0) sky=Sky() hand=Hand() app.run()
標簽: