원본 소스코드 - https://github.com/kairess/iwannabetheboshy-clone
원본 소스 코드에서 만들어진 프로그램을 따라 만들어 보겠습니다.
1. 라이브러리 임포트
from ursina import *
from ursina.prefabs.platformer_controller_2d import PlatformerController2d
2. 윈도우 만들기
app = Ursina()
3. 카메라 생성
#카메라 생성
camera.orthographic = True #원근감이 없도록 카메라를 직교로 설치
camera.fov = 20 #카메라가 수직으로 볼 수 있는 단위 수를 설정 fov(field of view = 시야각)
field of view 는 시야각으로 20 정도 설정
4. 플레이어가 밟고 지나가는 땅을 만들어 보자
# 땅을 만든다.
ground = Entity(
model='cube',
color=color.rgb(50, 180, 50),
z=0.1,
y=-8,
scale=(100, 5, 10),
collider='box'
)
Entity 는 객체를 의미하고 model='cube' 는 사각형을 의미한다. z=0.1 을 둔 것은 0 보다 약간 뒷쪽에 배치하겠다는 의미이고 scale 에서 x축으로 100 y축으로 5 크기로 만들겠다는 의미이다.
collider 는 box 형태로 두어서 충돌 했을 때 아래 쪽으로 내려가지 못하도록 설정했다.
5. 게임실행하기
# 게임 실행하기
app.run()
여기까지 실행하면 다음과 같은 화면이 뜬다.
6. 플레이어 만들기
- 원본 소스에 있는 boshy.png 를 플레이어로 만든다.
player = PlatformerController2d(
position=(-15, -5),
texture='boshy.png',
color=color.white,
scale=1,
max_jumps=2
)
PlatformerController2d 형태로 플레이어를 만들면 (a,d)키로 좌우 이동과 스페이스로 점프가 가능하다.
texture에 이미지 파일 이름을 넣으면 해당 이미지로 객체가 생성 되고 max_jumps=2 는 최대 점프 횟수가 2회 라는 의미이다.
실행을 해 보면 다음과 같이 동작한다.
7. 배경 화면 만들기
#백그라운드 만들기
background = Entity(
model='cube',
texture='background.png',
scale=(40, 20, 1),
z=2
)
background.png 를 배경 화면으로 z = 2 를 둔 것은 배경을 가장 뒷쪽에 배치 하겠다는 의미이다.
실행 화면
8. 장애물 랜덤 위치에 10개 만들기
spikes = []
for i in range(10):
spike = Entity(
model='cube',
texture='spike.png',
color=color.white,
collider='box',
position=(random.randint(-10, 10), -5),
scale=1
)
spikes.append(spike)
8개만 보이는 것은 같은 위치에 2개가 생겼기 때문이다.
9. 위에 벽을 밟고 이동할 수 있도록 벽을 세워 보자.
wall = Entity(
model='cube',
color=color.rgb(50, 180, 50),
collider='box',
position=(-3, 0),
scale=(5, 1)
)
10. 플레이어가 장애물에 부딪혔을 때 원 위치로 돌아가는 코드를 작성하자.
def update():
hit_info = player.intersects()
if hit_info.hit:
if hit_info.entity in spikes:
player.position = (-15, -5)
플레이어가 부딪힌 객체를 hit_info 에 가져와서 만약 spikes 리스트에 포함 되어 있는 객체라면 원래 생성위치로 돌아가자.
전체 실행 화면
'프로그래밍언어문법 > 파이썬 게임 프로그래밍' 카테고리의 다른 글
[파이썬기초] 가위 바위 보 게임만들기 (0) | 2023.07.07 |
---|---|
[파이썬기초] 날짜 계산하기 (0) | 2023.07.07 |
[파이썬기초] 주사위 던지기 게임 만들기 (0) | 2023.07.06 |
[파이썬기초] 단어채우기 게임 (0) | 2023.07.06 |
[파이썬 게임프로그래밍] Ursina 란 (0) | 2022.12.06 |