大家应该很多人没见过python做的我的世界,今天我就来演示一下:
首先得安装ursina:
pip install ursina
然后新建一个python文件,名称自选
里面写上以下内容
from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController from perlin_noise import PerlinNoise app = Ursina() 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',loop=False,autoplay=False) block_pick = 1 window.fps_counter.enabled = False window.exit_button.visible = False scene.fog_color = color.white scene.fog_density = 0.04 def input(key): if key == 'q' or key == 'escape': quit() 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.green, 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 = 150, 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.4,-0.6) ) def active(self): self.position = Vec2(0.3,-0.5) def passive(self): self.position = Vec2(0.4,-0.6) #初始化并使用柏林噪声生成随机地形 noise = PerlinNoise(octaves=3,seed=2023) scale = 24 for z in range(50): for x in range(50): block = Block(position = (x,0,z)) block.y = floor(noise([x/scale,z/scale])*8) player = FirstPersonController() sky = Sky() hand = Hand() app.run()