HAN1110 9899e780ba984d89824a90ee8deb7cb2
안녕하세요! HAN1110입니다!
오늘은 파이썬으로 마인크래프트를 만들어보겠습니다!
저번편에서 block.obj 라는 모델을 가져오는 코드를 만들었었죠?
그럼 소스를 가져올게요!
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
app = Ursina()
player = FirstPersonController()
class Voxel(Button):
def __init__(self, position=(0, 0, 0), texture='brick'):
super().__init__(
parent=scene,
position=position,
model='Asset/Block.obj',
origin_y=0.5,
texture=texture,
color=color.color(0, 0, random.uniform(0.9, 1.0)),
scale=1.0
)
def input(self, key):
if self.hovered:
if key == 'left mouse down':
destory(self)
if key == 'right mouse down':
Voxel(position=self.position + mouse.normal, texture=texture)
for x in range(20):
for z in range(20):
voxel = Voxel(position=(x, 0, z))
app.run()
이번편에서는 블럭의 텍스쳐와 하늘을 만들겁니다! 먼저
파일 1을 다운받아주세요!
다운받은 뒤에는 저번에 만든 Assets 폴더에 sky.jpg 만 넣어주세요(block.obj 빼면 고장나요. 안에 들어있던거중에서 얘기에요)
넣은 뒤에는 이제 하나 또 어려운걸 만들거에요
player = FirstPersonController()
밑에
Entity ( )
를 달아주시고
실행해봅시다.
??
블럭을 설치한거라도....
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
저거는 해결해야겠네요.
def __init__ 안에있는 texture='brick' 을
player = FirstPersonController()
밑으로 옴겨버립시다.
설치하자 터져버리네요.
원래대로 옴겨줍시다.
def input(self, key, texture='brick'):
도 추가해주고요.
참고로 저 소스는 그 부수고 설치하는 소스 쪽이에요
이제 하나만 해결하면 되네요.
근데 그건 다음편에서 해결합시다.
텍스쳐 문제거든요.
그럼 이제 하늘을 만들어볼까요
Entity ( )
안에서만 설명하기때문에
그 밖으로 나갈일은 거의 없어요
먼저 parent=scene 를 달아줍시다
Entity ( parent=scene )
실행해볼게요.
아무일 없거든요?(하늘)
모델을 바꿔버립시다.
Entity ( parent=scene, model='sphere' )
아무일 X 2연속...
하이라이트!
텍스쳐를 넣기!
Entity ( parent=scene, model='sphere', texture='../Assets/ sky.jpg' )
실행하면..?
이게...
우리 들의... 하늘..?
짜증나죠? 크기를 키워버립시다.
총 소스를 보여드리기 전에
저는 소스의 길이를 줄이려고
일부는 정의해놓았어요.
이건 알고가세요~
from ursina import * from ursina.prefabs.first_person_controller import FirstPersonController app = Ursina() player = FirstPersonController() Entity ( parent=scene, model='sphere', texture='../assets/sky.jpg', scale=500 ) class Voxel(Button): def __init__(self, position=(0, 0, 0),texture='brick',model='../assets/block.obj',color=(color.color(0, 0, random.uniform(0.9, 1.0)))): super().__init__( parent=scene, position=position, model=model, origin_y=0.5, texture=texture, color=color, scale=1.0 ) def input(self, key, texture='brick'): if self.hovered: if key == 'right mouse down': Voxel(position=self.position + mouse.normal, texture=texture) elif key == 'left mouse down': destroy(self) for x in range(3): for z in range(3): voxel = Voxel(position=(x, 0, z)) app.run()
실행!
없는데..?
당근이죠!
왜냐면 , load_texture 을 안했거든요.
Entity ( parent=scene, model='sphere', texture=load_texture('../assets/sky.jpg'), scale=500 )
또 없는데..?
양쪽에 달아줍시다
Entity ( parent=scene, model='sphere', texture=load_texture('../assets/sky.jpg'), scale=500, dobule_sided=True )
우와! 뽀로로 하늘이다!
전 이제 가야합니다
담편 작성하려고요.
ㅃ
이렌
2021.09.24다음엔 어셈블리인가 그거로 만들어주면 좋겠..큼HAN1110
2021.09.25어셈블리? 그 고통인 운영체제 만드는데나 쓰이는 언어로 게임을 만들라고요? 그거 못만들어요!
마커임
2021.09.25롤코타도 어셈블ㄹ 큼큼...HAN1110
2021.09.25아닠ㅋㅋㅋㅋ 어떻게 그걸로 만드라는 시도를 하시는거에요??