함수와 이벤트 처리 - 기본 개념 이해하기
기본 개념 이해하기
🧩 객체(Object)란? (복습)

- 속성과 행동을 함께 가진 레고 블록 같은 단위입니다.
- 변수는 속성을, 함수는 행동 설명서를 담고, 객체는 둘을 합친 형태입니다.
- Ursina의 Entity는
model,color,scale같은 속성과animate_position()같은 메서드를 가진 객체입니다.
update() 함수란?
update() 함수는 게임이 실행되는 동안 매 프레임마다 자동으로 호출되는 특별한 함수입니다. 게임은 보통 초당 60프레임(FPS)으로 실행되므로, update() 함수는 1초에 60번 호출됩니다!
update()의 활용
update() 함수는 다음과 같은 작업에 사용됩니다:
- 이동: 캐릭터나 총알을 매 프레임 조금씩 이동
- 충돌 검사: 매 프레임 객체들이 부딪혔는지 확인
- 입력 확인: 키가 계속 눌려있는지 확인 (
held_keys) - 애니메이션: 객체의 상태를 지속적으로 변경
Sequence란?
Sequence는 여러 동작을 순서대로 실행하는 객체입니다. 마치 음악 재생 목록처럼, 정해진 순서대로 동작을 실행합니다.
# 동작1 → 대기 → 동작2 → 대기 → ... (반복)
my_sequence = Sequence(
Func(do_something), # 함수 실행
Wait(0.5), # 0.5초 대기
loop=True # 무한 반복
)
my_sequence.start() # 시퀀스 시작
| 구성 요소 | 설명 | 예시 |
|---|---|---|
Func() |
실행할 함수를 감쌉니다 | Func(shoot) |
Wait() |
지정한 시간만큼 대기합니다 | Wait(0.1) - 0.1초 대기 |
loop=True |
시퀀스를 무한 반복합니다 | - |
Sequence vs update()
update(): 매 프레임(초당 60번) 실행됩니다Sequence: 원하는 간격으로 실행할 수 있습니다 (예: 0.1초마다)
input() 함수란?
input() 함수는 키보드나 마우스 입력이 발생했을 때 자동으로 호출되는 함수입니다.
def input(key):
if key == 'space': # 스페이스바를 누르면
print("점프!")
if key == 'space up': # 스페이스바를 떼면
print("착지!")
input() vs held_keys
input(key): 키를 누르거나 뗄 때 한 번 호출됩니다held_keys['키이름']: 키가 계속 눌려있는지 확인합니다 (True/False)
time.dt란?
time.dt는 이전 프레임과 현재 프레임 사이의 시간 간격(초)입니다. 컴퓨터 성능에 관계없이 일정한 속도로 이동하게 해줍니다.
# 나쁜 예: 컴퓨터마다 속도가 다름
player.x += 0.1
# 좋은 예: 모든 컴퓨터에서 같은 속도
player.x += speed * time.dt # 초당 speed만큼 이동