pyxen.Sound

Entity에 컴포넌트로 첨부되는 짧은 오디오 클립입니다.

사운드는 메모리에 전체가 로드됩니다 — 점프, 타격, 아이템 획득 같은 짧은 효과에 사용하세요.

오디오 개념은 오디오를 참조하세요.


생성자

Sound(filename)

필수 위치 인수 하나: 프로젝트 내 WAV 오디오 에셋의 이름.


매개변수

매개변수타입설명
filenamestrWAV 에셋 이름

예시

jump_sound = Sound("jump")

Sound 첨부

생성 시:

sfx = world.spawn(sound=Sound("jump"))

또는 나중에:

entity.sound = Sound("jump")

사운드를 할당하면 즉시 재생이 시작됩니다.


컴포넌트 속성

entity.sound를 통해 접근:

속성타입R/W설명
loopboolR/W반복 활성화
volumefloatR/W게인 (>= 0.0으로 클램프)
panfloatR/W스테레오 패닝 (-1.0에서 1.0)
timefloatR/W현재 재생 위치(초)
delayfloatR/W재생이 시작되기까지의 무음 시간(초)
durationfloatR전체 길이 (초)
finishedboolR재생이 완료되면 True

loop

entity.sound.loop = True

활성화되면 사운드가 끝난 후 자동으로 다시 시작됩니다.


volume

entity.sound.volume = 0.5

0.0 미만의 값은 0.0으로 클램프됩니다.


pan

entity.sound.pan = -1.0  # 완전히 왼쪽
entity.sound.pan =  1.0  # 완전히 오른쪽
entity.sound.pan =  0.0  # 가운데

-1.0에서 1.0 범위로 클램프됩니다.


time

t = entity.sound.time
entity.sound.time = 0.25     # 처음 0.25초를 건너뜀

재생 위치(초)입니다. 값을 대입하면 그 위치로 탐색합니다. 끝을 넘는 값은 끝으로 제한되며, 이미 끝난 소리를 탐색하면 다시 재생됩니다.


delay

entity.sound.delay = 0.002   # 2밀리초 뒤에 시작

소리가 시작되기까지의 무음 시간(초)입니다. time 과 달리 아무것도 건너뛰지 않습니다. 소리는 여전히 첫 샘플부터 시작하며, 시작 시점만 늦어집니다.

같은 효과음이 한 프레임 안에서 여러 번 울릴 때 쓰는 것입니다. 같은 파형의 복사본이 같은 샘플에서 시작하면 위상이 맞아 더해집니다. 둘이면 1.4배가 아니라 두 배의 진폭이 되고, 열이 겹치면 각각을 아무리 신경 써서 맞춰도 믹스가 풀스케일을 넘습니다. 몇 밀리초만 어긋나도 상관 관계는 끊어지며, 그 정도는 빈틈으로 들리지 않습니다.

딜레이가 갈라놓는 것은 어택입니다. 짧은 타격음에는 잘 듣지만 지속음에는 아무 효과가 없습니다.


duration

d = entity.sound.duration

읽기 전용. 사운드의 전체 길이 (초).


finished

if entity.sound.finished:
    world.destroy(entity)

읽기 전용. 사운드 재생이 완료되면 (loop가 False일 때) True.


형식

사운드 에셋은 WAV 파일이어야 합니다.


일반적인 에러

파일 이름 누락

Sound()
ValueError: Sound must have a file

잘못된 에셋

Sound("nonexistent")

사운드 객체는 생성되지만 재생이 경고 로그와 함께 조용히 실패합니다.