Я не могу сломать блок, созданный ландшафтом, в своем клоне Minecraft.Python

Программы на Python
Ответить
Anonymous
 Я не могу сломать блок, созданный ландшафтом, в своем клоне Minecraft.

Сообщение Anonymous »

Когда я пытаюсь разбить блок, сгенерированный кодом генерации ландшафта, ничего не происходит, никаких ошибок трассировки ничего не происходит, когда я щелкаю правой кнопкой мыши по блоку, сгенерированному функцией генерации ландшафта. блок создается из класса вокселей и добавляется к списку фрагментов, который повторяется функциейgenerate_terrain. вот код:

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
from ursina import *
from numpy import floor
from perlin_noise import PerlinNoise
from ursina.prefabs.first_person_controller import FirstPersonController

RENDER_DISTANCE = 5 # How far to render terrain from player
AMPLITUDE = 8
FREQUENCY = 24
SEED = 42
chunks = []
noise = PerlinNoise(octaves=3, seed=SEED)

Minecraft = Ursina(
title='Minecraft',
borderless=False,
vsync=False,
show_ursina_splash= True)

player = FirstPersonController()

def input(key):
if key == 'escape':
quit()

class Voxel(Button):
def __init__(self, position=(0,0,0)):
super().__init__(
parent=scene,
position=position,
model='cube',
origin_y=0.5,
texture='white_cube',
color=color.white,
highlight_color=color.lime
)

def input(self, key):
if self.hovered:
if key == 'left mouse down':
Voxel(position=self.position + mouse.normal)
elif key == 'right mouse down':
if self in chunks:
chunks.remove(self)
destroy(self)

def generate_terrain(player):
"""Generate terrain blocks around the player."""
global amp, freq
for i in range(RENDER_DISTANCE * RENDER_DISTANCE):
x = floor((i / RENDER_DISTANCE) + player.x - 0.5 * RENDER_DISTANCE)
z = floor((i % RENDER_DISTANCE) + player.z - 0.5 * RENDER_DISTANCE)
y = floor(noise([x / FREQUENCY, z / FREQUENCY]) * AMPLITUDE)

# Create a terrain block using the Voxel class
voxel = Voxel(position=(x, y, z))
chunks.append(voxel)

def update():
# Delete chunks outside render distance
for chunk in chunks[:]: # Use slice copy to avoid modification during iteration
distance = abs(chunk.x - player.x) + abs(chunk.z - player.z)
if distance > RENDER_DISTANCE * 2:
destroy(chunk)
chunks.remove(chunk)

# Generate new terrain
generate_terrain(player)

Minecraft.run()


Подробнее здесь: https://stackoverflow.com/questions/793 ... raft-clone
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»