ursina minecraft

本文展示了一个使用Ursina游戏引擎开发的简单第一人称游戏,玩家可以切换不同类型的方块,通过鼠标点击进行放置和破坏。游戏世界使用Perlin噪声生成地形,具有不同纹理的方块,包括草、石头、金和岩浆。此外,还包含一个天空盒和音效系统。
摘要由CSDN通过智能技术生成
from ursina import*
from ursina.prefabs.first_person_controller import FirstPersonController
from perlin_noise import PerlinNoise
app=Ursina()
window.fps_counter.enabled=False
window.exit_button.visible=False
punch=Audio('assets/punch.wav',autoplay=False)
blocks=[load_texture('assets/grass.png'),load_texture('assets/stone.png'),load_texture('assets/gold.png'),load_texture('assets/lava.png'),load_texture('assets/sky.jpg')]
block_RTSSTS=0
def input(key):
    if key=='escape':quit()
def update():
    global block_RTSSTS,hand
    if held_keys['0']:block_RTSSTS=0
    if held_keys['1']:block_RTSSTS=1
    if held_keys['2']:block_RTSSTS=2
    if held_keys['3']:block_RTSSTS=3
    hand.texture=blocks[block_RTSSTS]
    if held_keys['right mouse']or held_keys['left mouse']:hand.active()
    else:hand.passive()
class Block(Button):
    def __init__(self,position=(0,0,0),texture='assets/grass.png'):
        super().__init__(
            parent=scene,
            position=position,
            model='assets/block',
            origin_y=0.5,
            texture=texture,
            color=color.white,
            scale=0.5,
            double_sided=True)
    def input(self, key):
        if self.hovered:
            if key=='right mouse down':
                punch.play()
                block=Block((self.position+mouse.normal),texture=blocks[block_RTSSTS])
            if key=='left mouse down':
                punch.play()
                destroy(self)
class Hand(Entity):
    def __init__(self):
        super().__init__(
            parent=camera.ui,
            model='assets/block',
            texture=blocks[block_RTSSTS],
            color=color.white,
            scale=0.2,
            rotation=Vec3(0,2,0),
            position=Vec2(0.5,-0.5),
            double_sided=True)
    def active(key):
        hand.position=Vec2(0.4,-0.4)
    def passive(key):
        hand.position=Vec2(0.5,-0.5)
class Sky(Entity):
    def __init__(self):
        super().__init__(
            parent=scene,
            model='cube',
            texture='assets/sky.jpg',
            scale=299,
            double_sided=True)
noise=PerlinNoise(octaves=2,seed=random.randint(1,999999999))
for r in range(59):
    for s in range(59):
        block=Block((r,0,s))
        block.y=floor(noise([r/29,s/29])*5)
sky=Sky()
block=Block()
player=FirstPersonController()
hand=Hand()
if __name__=='__main__':
    print('Welcome Rtssts Minecraft')
    print('SEED:',random.randint(1,999999999))
    print('Minecraft is loading...')
    time.sleep(9)
    app.run()

 

 

 

 

 

呃……只是一个附加罢了………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值