Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2022-09-04 12:45:01 +02:00

92 lines
2.7 KiB
Python

from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
app = Ursina()
window.fps_counter.enabled = False
window.exit_button.visible = False
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')
block_pick = 1
punch_sound = Audio('assets/punch_sound', loop = False, autoplay = False, volume = 0.2)
def update():
global block_pick
if held_keys['left mouse'] or held_keys['right mouse']:
hand.active()
else:
hand.passive()
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
class Voxel(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)),
scale = 0.5
)
def input(self, key):
if self.hovered:
if key == 'left mouse down':
punch_sound.play()
if block_pick == 1: Voxel(position= self.position + mouse.normal, texture = grass_texture)
if block_pick == 2: Voxel(position= self.position + mouse.normal, texture = stone_texture)
if block_pick == 3: Voxel(position= self.position + mouse.normal, texture = brick_texture)
if block_pick == 4: Voxel(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.6, -0.6)
)
def active(self):
self.position = Vec2(0.5, -0.5)
def passive(self):
self.position = Vec2(0.6, -0.6)
for z in range(20):
for x in range(20):
Voxel(position = (x, 0, z))
player = FirstPersonController()
sky = Sky()
hand = Hand()
app.run()