함수와 이벤트 처리 - 퀴즈
퀴즈: 함수와 이벤트 처리 이해하기
퀴즈 1: update() 함수
퀴즈: update() 함수
update() 함수는 언제 호출되나요?
정답 보기
정답: B) 매 프레임마다 자동으로
update() 함수는 게임이 실행되는 동안 매 프레임마다 자동으로 호출됩니다.
게임이 60FPS로 실행되면, 1초에 60번 호출됩니다!
퀴즈 2: Sequence의 구성
퀴즈: Sequence의 구성
탄막이 계속 발사되도록 도와주는 객체는 무엇인가요?
정답 보기
정답: B) Sequence(Func(shoot), Wait(...), loop=True)
Sequence는 여러 동작을 순서대로 실행합니다:
퀴즈 3: time.dt 사용 이유
퀴즈: time.dt 사용 이유
player.position += direction * speed * time.dt에서 time.dt를 사용하는 이유는?
정답 보기
정답: C) 컴퓨터 성능에 관계없이 일정한 속도로 이동하기 위해
time.dt는 프레임 사이의 시간 간격입니다.
- 60FPS 컴퓨터: time.dt ≈ 0.0167초
- 30FPS 컴퓨터: time.dt ≈ 0.0333초
time.dt를 곱하면 어떤 컴퓨터에서든 초당 같은 거리를 이동합니다!
퀴즈 4: input 함수의 키 이벤트
퀴즈: 키 이벤트
스페이스바를 **뗐을 때** 발생하는 키 이벤트 이름은 무엇인가요?
힌트: "키이름 up" 형식입니다.
힌트: "키이름 up" 형식입니다.
정답 보기
정답: space up
키보드 입력 이벤트는 두 종류가 있습니다:
def input(key):
if key == 'space': # 키를 누를 때
print("눌렀다!")
if key == 'space up': # 키를 뗄 때
print("뗐다!")
다른 키도 마찬가지입니다: 'a', 'a up', 'w', 'w up' 등
퀴즈 5: 메쉬 업데이트
퀴즈: 메쉬 업데이트
메쉬의 vertices 리스트를 변경한 후, 화면에 반영하기 위해 호출해야 하는 함수 이름은?
정답 보기
정답: generate
메쉬의 정점(vertices)을 변경한 후에는 반드시 generate()를 호출해야 합니다:
다음 단계
축하합니다! 이제 함수와 이벤트 처리의 핵심 개념을 이해했습니다.
이번 강의에서 배운 것:
update()함수로 매 프레임 코드 실행하기Sequence,Func,Wait로 반복 동작 만들기input()함수로 키보드 입력 처리하기- 메쉬의 정점(vertices)을 조작하여 파티클 효과 만들기
연습해보세요!
코드를 실행하고 다양한 값을 바꿔보세요!
# 발사 간격 변경
shoot_cooldown = .05 # 더 빠른 발사 (0.1 → 0.05)
# 플레이어 속도 변경
player.speed = 12 # 더 빠른 이동 (8 → 12)
# 총알 색상 변경
player.bullet_renderer.color = color.red # 빨간색 총알
이렇게 작은 변경으로 게임의 느낌이 완전히 달라집니다!
도전 과제
다음 기능을 추가해보세요:
- 적 추가하기:
enemies.append()로 더 많은 적 만들기 - 점수 시스템: 적을 처치하면 점수 증가
- 폭발 효과: 적이 죽을 때 파티클 효과 추가
🧩 객체(Object) 개념 복습
- 객체는 레고 블록처럼 속성과 행동을 함께 가진 존재입니다.
- 변수는 값을 담는 포스트잇, 함수는 행동 설명서, 객체는 둘을 합친 장난감입니다.
- Ursina의 Entity도 객체: model, color, scale 같은 속성과 animate_position() 같은 행동을 함께 가집니다.
- 리스트에 객체를 넣으면 필요할 때 꺼내 쓰고 일괄 처리할 수 있는 바구니가 됩니다.