Add-On 개발

현재 작성중인 페이지입니다. 향후 버전에서 변경될 구문에 유의하시기 바랍니다.

Hmmsim 용 Add-On은 다양한 기능이 추가된 완전히 새로운 구조로 설계되었습니다.
향후 BVE Add-On을 Hmmsim Add-On으로 변환한 뒤 새로운 기능을 추가하거나 편집할 수 있게 될 예정입니다.


파일 호환

텍스트ASCII / UTF-8
텍스쳐.bmp
오브젝트.hmmo / .csv
사운드.wav / .ogg / .mp3


파일 구조

Scenarios.txt ->Localization
->Train
->Scenario ->Map
->Track
->Train


스크립트 문법

#네임스페이스
네임스페이스를 선언합니다.

{ ... }
네임스페이스는 대괄호로 묶어서 사용합니다.

명령어 = ;
명령어 = 0, 값1, ...;
네임스페이스 안에서 명령어를 호출합니다. 여러 개의 값이 필요한 명령어도 있습니다.
여러 개의 값이 필요한 명령어에 값을 모두 나열하지 않으면 명령어에 설정된 기본값으로 처리됩니다.

명령어();
명령어(0, 값1, ...);
함수형 명령어도 존재합니다. 마찬가지로 여러 개의 값이 필요한 명령어도 있습니다.

@ 주석
주석을 삽입합니다. 주석은 해당 라인의 끝까지 유지됩니다.


Scenarios.txt

Hmmsim Add-On의 시작점이 되는 파일입니다. 이 파일 이름은 반드시 Scenarios.txt 여야만 합니다.

#Settings
{
LocalizeFile = 파일경로;
파일경로 : 언어 파일의 상대 경로를 입력합니다.

LoadingImage = 파일경로;
파일경로 : 로딩 화면으로 사용할 텍스쳐 파일의 상대 경로를 입력합니다.
}

#List
{
#Train
{
네임스페이스를 등록하여 노선 선택 화면에 나타낼 열차를 추가합니다. 추가된 모든 열차가 리스트에 순서대로 표시됩니다.

Name = 이름;
이름 : 리스트에 표시될 열차 이름을 입력합니다. 첫 글자가 $ 로 시작하는 경우 언어 파일에서 설정된 ID의 텍스트로 대체됩니다.

File = 파일경로;
파일경로 : 열차 파일의 상대 경로를 입력합니다.
}

#Scenario
{
네임스페이스를 등록하여 노선 선택 화면에 나타낼 시나리오를 추가합니다. 추가된 모든 시나리오가 리스트에 순서대로 표시됩니다.

Name = 이름;
이름 : 리스트에 표시될 시나리오 이름을 입력합니다. 첫 글자가 $ 로 시작하는 경우 언어 파일에서 설정된 ID의 텍스트로 대체됩니다.

File = 파일경로;
파일경로 : 시나리오 파일의 상대 경로를 입력합니다.
}
}


Localization

Add-On에 사용되는 모든 텍스트를 설정하는 파일입니다. 필요하지 않다면 이 파일은 작성하지 않아도 됩니다.
만약 게임 설정 언어에 해당하는 ID가 없는 경우 영어 텍스트가 기본으로 표시됩니다.

#English
{
$ID = 텍스트;
ID : 텍스트의 ID를 입력합니다.
텍스트 : 게임 설정 언어가 영어일 때 표시될 텍스트를 입력합니다.
}

#Korean
{
$ID = 텍스트;
ID : 텍스트의 ID를 입력합니다.
텍스트 : 게임 설정 언어가 한국어일 때 표시될 텍스트를 입력합니다.
}

#Japanese
{
$ID = 텍스트;
ID : 텍스트의 ID를 입력합니다.
텍스트 : 게임 설정 언어가 일본어일 때 표시될 텍스트를 입력합니다.
}


Scenario

게임이 실행될 맵을 설정하고 열차를 배치하는 파일입니다.

#Map
{
Defines = 정의0, 정의1, ...;
정의 : 맵 파일에 대응하는 정의를 입력합니다. 여러 개의 값을 입력할 수 있습니다.
맵에서 정의를 사용하지 않는 경우 이 명령어는 작성하지 않아도 됩니다.

File = 파일경로;
파일경로 : 맵 파일의 상대 경로를 입력합니다.

#Track
{
네임스페이스를 등록하여 열차가 움직이게 될 트랙을 추가합니다. 추가된 모든 트랙은 열차를 배치할 때 사용할 수 있습니다.

Name = 이름;
이름 : 트랙 이름을 입력합니다.

File = 파일경로;
파일경로 : 트랙 파일의 상대 경로를 입력합니다.
}
}

#Trains
{
#MyTrain
{
유저가 운행하게 될 열차를 설정합니다.

Track = 이름;
이름 : 추가된 트랙 중 사용할 트랙의 이름을 입력합니다.

DepartTime = 시간;
시간 : 열차가 첫 정거장에 배치될 시간을 시:분:초 (HH:MM:SS) 형태의 값으로 입력합니다.
}

#Train
{
네임스페이스를 등록하여 다른 열차를 배치합니다. 추가된 모든 열차가 맵에 배치됩니다.

File = 파일경로;
파일경로 : 열차 파일의 상대 경로를 입력합니다.

Track = 이름;
이름 : 추가된 트랙 중 사용할 트랙의 이름을 입력합니다.

DepartTime = 시간;
시간 : 열차가 첫 정거장에 배치될 시간을 시:분:초 (HH:MM:SS) 형태의 값으로 입력합니다.
}
}


Track

열차가 움직이게 될 트랙을 설정하는 파일입니다.

#Track
{
#Rail
{
네임스페이스를 등록하여 트랙에 배치할 레일을 추가합니다. 추가된 모든 레일이 순서대로 배치됩니다.

Name = 이름;
이름 : 맵 파일에서 배치된 레일 이름을 입력합니다.

Section = 시작위치, 종료위치;
시작위치 : 맵 파일에서 배치된 레일 구간의 시작 위치를 입력합니다.
종료위치 : 맵 파일에서 배치된 레일 구간의 종료 위치를 입력합니다.
시작 위치를 종료 위치보다 멀리 설정할 수도 있습니다. 단지 열차는 시작 위치에서 종료 위치 방향으로 움직이게 됩니다.
}
}

#Diagram
{
#Station
{
네임스페이스를 등록하여 트랙에 배치할 정거장을 추가합니다. 추가된 모든 정거장이 순서대로 배치됩니다.

Name = 이름;
이름 : 정거장 이름을 입력합니다. 첫 글자가 $ 로 시작하는 경우 언어 파일에서 설정된 ID의 텍스트로 대체됩니다.

Position = 위치;
위치 : 정차 위치를 입력합니다.

Range = null, 범위;
null : 이 값은 사용하지 않으므로 아무런 값을 입력합니다.
범위 : 정차 허용 범위를 입력합니다.
* 이 명령어는 1.3.0 버전에서 다음 형태로 변경됩니다.
Range = 범위;

Door = 방향;
방향 : 출입문 방향을 다음 값 중 하나로 입력합니다.
Left : 왼쪽 촐입문으로 설정합니다.
Right : 오른쪽 촐입문으로 설정합니다.
None : 출입문을 열지 않기로 설정합니다.

Time = 도착시간, 출발시간;
도착시간 : 도착 시간을 시:분:초 (HH:MM:SS) 형태의 값으로 입력합니다.
출발시간 : 출발 시간을 시:분:초 (HH:MM:SS) 형태의 값으로 입력합니다.
여기에 설정하는 시간은 첫 정거장부터 각 정거장까지 소요되는 시간을 의미합니다.
따라서 첫 정거장의 도착 시간은 반드시 0:00:00 으로 설정해야 합니다.
}
}

#Events
{
#Sky
{
네임스페이스를 등록하여 트랙에 배치할 배경 텍스쳐 이벤트를 추가합니다. 추가된 모든 이벤트가 순서대로 배치됩니다.

Position = 위치;
위치 : 이벤트 위치를 입력합니다.

File = 파일경로;
파일경로 : 배경 텍스쳐로 사용할 파일의 상대 경로를 입력합니다.
}

#Brightness
{
네임스페이스를 등록하여 트랙에 배치할 열차 밝기 이벤트를 추가합니다. 추가된 모든 이벤트가 순서대로 배치됩니다.

Position = 위치;
위치 : 이벤트 위치를 입력합니다.

Brightness = 밝기;
밝기 : 열차 밝기를 0.0 ~ 1.0 사이 값으로 입력합니다.
}

#RunSound
{
네임스페이스를 등록하여 트랙에 배치할 열차 주행음 이벤트를 추가합니다. 추가된 모든 이벤트가 순서대로 배치됩니다.

Position = 위치;
위치 : 이벤트 위치를 입력합니다.

Sound = 인덱스;
인덱스 : 열차 파일에서 설정한 주행음 또는 마찰음 인덱스를 입력합니다.
}

#Switch
{
네임스페이스를 등록하여 트랙에 배치할 열차 분기기 통과음 이벤트를 추가합니다. 추가된 모든 이벤트가 순서대로 배치됩니다.

Position = 위치;
위치 : 이벤트 위치를 입력합니다.
}

#Limit
{
네임스페이스를 등록하여 트랙에 배치할 제한속도 이벤트를 추가합니다. 추가된 모든 이벤트가 순서대로 배치됩니다.

Position = 위치;
위치 : 이벤트 위치를 입력합니다.

Speed = 속도;
속도 : 제한속도를 입력합니다.
}

#Announce
{
네임스페이스를 등록하여 트랙에 배치할 안내방송 이벤트를 추가합니다. 추가된 모든 이벤트가 순서대로 배치됩니다.

Position = 위치;
위치 : 이벤트 위치를 입력합니다.

File = 파일경로;
파일경로 : 안내방송으로 사용할 사운드 파일의 상대 경로를 입력합니다.
}
}


Train

열차를 설정하는 파일입니다.

#Specifications
{
Handle = null;
현재 사용하지 않는 명령어입니다.

Deceleration = 감속도;
감속도 : 감속도를 km/h/s 단위 값으로 입력합니다.

FrictionCoefficient = null;
현재 사용하지 않는 명령어입니다.

AirBrakeSpeed = 속도;
속도 : 공기 제동으로 전환되는 기준 속도를 입력합니다.

#PowerNotch
{
가속 놋치를 설정합니다.

Count = 단수;
단수 : 놋치 단 수를 입력합니다.

ControlDelay = 상승반응시간, 하강반응시간;
상승반응시간 : 놋치가 올라갈 때의 반응 속도를 초 단위 값으로 입력합니다.
하강반응시간 : 놋치가 내려갈 때의 반응 속도를 초 단위 값으로 입력합니다.

ControlJerk = 상승가가속도, 하강가가속도;
상승가가속도 : 놋치가 올라갈 때의 가가속도를 m/s3 단위 값으로 입력합니다.
하강가가속도 : 놋치가 내려갈 때의 가가속도를 m/s3 단위 값으로 입력합니다.

#Acceleration
{
가속도 곡선을 설정합니다.

Notch[인덱스] = a0, a1, v1, v2, e;
인덱스 : 놋치 인덱스를 입력합니다.
a0 : 0 km/h 속도에서 적용되는 가속도를 km/h/s 단위 값으로 입력합니다.
a1 : v1의 속도에서 적용되는 가속도를 km/h/s 단위 값으로 입력합니다.
v1 : 가속도 보간이 시작될 속도를 입력합니다.
v2 : 가속도 곡선이 시작될 속도를 입력합니다.
e : 가속도 곡선에 필요한 지수를 입력합니다.
반드시 놋치 단 수만큼 모든 인덱스에 설정해야 합니다.
}
}

#BrakeNotch
{
제동 놋치를 설정합니다.

Count = 단수;
단수 : 놋치 단 수를 입력합니다.

ControlDelay = 상승반응시간, 하강반응시간;
상승반응시간 : 놋치가 올라갈 때의 반응 속도를 초 단위 값으로 입력합니다.
하강반응시간 : 놋치가 내려갈 때의 반응 속도를 초 단위 값으로 입력합니다.

ControlJerk = 상승가가속도, 하강가가속도;
상승가가속도 : 놋치가 올라갈 때의 가가속도를 m/s3 단위 값으로 입력합니다.
하강가가속도 : 놋치가 내려갈 때의 가가속도를 m/s3 단위 값으로 입력합니다.
}

#Pressure
{
압력계를 설정합니다.

Reservoir = 최소압력, 최대압력;
최소압력 : 압력계의 최소 압력을 kPa 단위 값으로 입력합니다.
최대압력 : 압력계의 최대 압력을 kPa 단위 값으로 입력합니다.

CylinderMax = 상용최대압력, 비상제동압력;
상용최대압력 : 상용 제동일 때의 최대 압력을 kPa 단위 값으로 입력합니다.
비상제동압력 : 비상 제동일 때의 압력을 kPa 단위 값으로 입력합니다.

CylinderDelta = 상승변화량, 하강변화량;
상승변화량 : 압력이 올라갈 때의 변화량을 kPa/s 단위 값으로 입력합니다.
하강변화량 : 압력이 내려갈 때의 변화량을 kPa/s 단위 값으로 입력합니다.
}
}

#TrainSet
{
#Car
{
네임스페이스를 등록하여 열차의 차량을 추가합니다. 추가된 모든 차량이 순서대로 편성됩니다.

Objects = 파일경로0, 파일경로1, ...;
파일경로 : 차량 오브젝트로 사용할 파일의 상대 경로를 입력합니다. 여러 개의 값을 입력할 수 있습니다.

Length = 길이;
길이 : 차량 길이를 입력합니다.

Axles = 앞위치, 뒷위치;
앞위치 : 차량의 가운데 0m를 기준으로 앞 대차의 상대 위치를 입력합니다.
뒷위치 : 차량의 가운데 0m를 기준으로 뒷 대차의 상대 위치를 입력합니다.

View = x, y, z;
x : 차량의 가운데 0m를 기준으로 X 축 카메라 시점의 상대 위치를 입력합니다.
y : 레일 높이를 기준으로 Y 축 카메라 시점의 상대 위치를 입력합니다.
z : 차량의 가운데 0m를 기준으로 Z 축 카메라 시점의 상대 위치를 입력합니다.

Mass = null;
현재 사용하지 않는 명령어입니다.
}
}

#Sounds
{
열차에 사용되는 모든 사운드를 설정합니다.

Motor[인덱스] = 파일경로;
인덱스 : 사용할 인덱스를 0 ~ 15 사이 값으로 입력합니다.
파일경로 : 엔진 구동음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Run[인덱스] = 파일경로;
인덱스 : 사용할 인덱스를 0 ~ 7 사이 값으로 입력합니다.
파일경로 : 주행음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Flange[인덱스] = 파일경로;
인덱스 : 사용할 인덱스를 0 ~ 7 사이 값으로 입력합니다.
파일경로 : 선로 마찰음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Reverser[상태] = 파일경로;
상태 : 역전기 상태를 다음 값 중 하나로 입력합니다.
Up : 역전기가 올라갈 때를 설정합니다.
Down : 역전기가 내려갈 때를 설정합니다.
파일경로 : 역전기 제어음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

PowerNotch[상태] = 파일경로;
상태 : 가속 놋치 상태를 다음 값 중 하나로 입력합니다.
Up : 가속 놋치가 올라갈 때를 설정합니다.
Down : 가속 놋치가 내려갈 때를 설정합니다.
Max : 가속 놋치가 최대 단수로 올라갈 때를 설정합니다.
Min : 가속 놋치가 0으로 내려갈 때를 설정합니다.
파일경로 : 가속 놋치 제어음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

BrakeNotch[상태] = 파일경로;
상태 : 제동 놋치 상태를 다음 값 중 하나로 입력합니다.
Up : 제동 놋치가 올라갈 때를 설정합니다.
Down : 제동 놋치가 내려갈 때를 설정합니다.
Max : 제동 놋치가 최대 단수로 올라갈 때를 설정합니다.
Min : 제동 놋치가 0으로 내려갈 때를 설정합니다.
파일경로 : 제동 놋치 제어음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

AirBrake[상태] = 파일경로;
상태 : 제동 상태를 다음 값 중 하나로 입력합니다.
Release : 제동이 해제될 때를 설정합니다.
ReleaseHigh : 제동이 완전히 해제될 때를 설정합니다.
ReleaseFull : 비상 제동이 체결될 때를 설정합니다.
파일경로 : 공기 제동음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Door[상태] = 파일경로;
상태 : 출입문 상태를 다음 값 중 하나로 입력합니다.
LeftOpen : 왼쪽 출입문이 열릴 때를 설정합니다.
RightOpen : 오른쪽 출입문이 열릴 때를 설정합니다.
LeftClose : 왼쪽 출입문이 닫힐 때를 설정합니다.
RightClose : 오른쪽 출입문이 닫힐 때를 설정합니다.
파일경로 : 출입문 구동음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Klaxon[인덱스] = 파일경로;
인덱스 : 사용할 인덱스를 다음 값 중 하나로 입력합니다.
0 : 일반 경적음을 설정합니다.
1 : 발차벨을 설정합니다.
파일경로 : 경적음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Lamp[상태] = 파일경로;
상태 : 램프 상태를 다음 값 중 하나로 입력합니다.
On : 램프가 점등될 때를 설정합니다.
Off : 램프가 꺼질 때를 설정합니다.
파일경로 : 램프 점등음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Buzzer = 파일경로;
파일경로 : 부저음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Switch = 파일경로;
파일경로 : 분기기 통과음으로 사용할 사운드 파일의 상대 경로를 입력합니다.

Noise = 파일경로;
파일경로 : 열차 잡음 배경음으로 사용할 사운드 파일의 상대 경로를 입력합니다.
}

#Motorgraph
{
구동음 그래프를 설정합니다.

#Power
{
가속 상태의 구동음 그래프를 설정합니다.

#Motor인덱스
{
네임스페이스를 등록하여 구동음 인덱스에 대응하는 그래프를 설정합니다.

Key = 속도, 볼륨, 피치;
속도 : 키의 속도 값을 입력합니다.
볼륨 : 속도에 해당하는 볼륨 값을 입력합니다.
피치 : 속도에 해당하는 피치 (Pitch) 값을 입력합니다.
낮은 속도 순서대로 키를 추가합니다. 키와 키 사이는 선형 보간으로 처리됩니다.
}
}

#Brake
{
제동 상태의 구동음 그래프를 설정합니다.

#Motor인덱스
{
네임스페이스를 등록하여 구동음 인덱스에 대응하는 그래프를 설정합니다.

Key = 속도, 볼륨, 피치;
속도 : 키의 속도 값을 입력합니다.
볼륨 : 속도에 해당하는 볼륨 값을 입력합니다.
피치 : 속도에 해당하는 피치 (Pitch) 값을 입력합니다.
낮은 속도 순서대로 키를 추가합니다. 키와 키 사이는 선형 보간으로 처리됩니다.
}
}
}


Map

* 현재 맵 파일 문법은 스크립트 문법과 약간의 차이가 있습니다. 1.3.0 버전에서 스크립트 문법 형태로 모두 변경됩니다.

<Settings>
이 네임스페이스는 현재 사용하지 않으며 1.3.0 버전에서 폐지됩니다.

<Structures>

Object[인덱스] = 파일경로
인덱스 : 사용할 인덱스를 0 ~ 65535 사이 값으로 입력합니다.
파일경로 : 오브젝트로 사용할 파일의 상대 경로를 입력합니다.

Sound[인덱스] = 파일경로
인덱스 : 사용할 인덱스를 0 ~ 255 사이 값으로 입력합니다.
파일경로 : 사운드로 사용할 파일의 상대 경로를 입력합니다.

* 이 네임스페이스는 1.3.0 버전에서 다음 형태로 변경됩니다.
#Assets
{
Object[인덱스] = 파일경로;
Sound[인덱스] = 파일경로;
}

<Map>

[Main]

메인 레일을 설정합니다. 다음은 메인 레일에서만 사용 가능한 명령어입니다.

Curve(곡선반경, 캔트);
곡선반경 : 곡선 반경을 미터 단위 값으로 입력합니다.
캔트 : 캔트 값을 밀리미터 단위 값으로 입력합니다.

Pitch(구배);
구배 : 구배를 미터퍼밀 단위 값으로 입력합니다.

CurveTransition();
Curve 명령어 호출 전에 사용하여 완화곡선을 설정합니다.

PitchTransition();
Pitch 명령어 호출 전에 사용하여 종곡선을 설정합니다.

[이름]

새 레일을 추가합니다. 이전에 추가했던 레일과 같은 이름인 경우 동일한 레일로 처리되며 이어서 배치할 수 있습니다.
다음은 기타 레일에서만 사용 가능한 명령어입니다.

Position(x, y, 곡선보간);
x : 메인 레일을 기준으로 X 축의 상대 위치를 입력합니다.
y : 메인 레일을 기준으로 Y 축의 상대 위치를 입력합니다.
곡선보간 : 곡선보간 여부를 다음 값 중 하나로 입력합니다.
true : 다음 Position 명령어와의 사이를 곡선 보간으로 설정합니다.
false : 다음 Position 명령어와의 사이를 선형 보간으로 설정합니다.

다음은 모든 레일에서 공통으로 사용 가능한 명령어입니다.

위치;
위치 : 현재 위치를 음수가 아닌 정수 값으로 입력합니다.

PatternObj(인덱스, 배치간격, 배치각도, x, y, 오브젝트0, 오브젝트1, ...);
인덱스 : 사용할 인덱스를 0 ~ 255 사이 값으로 입력합니다.
배치간격 : 반복 배치할 간격을 입력합니다.
배치각도 : 오브젝트의 배치 각도로 사용할 간격을 입력합니다.
x : 해당 레일을 기준으로 X 축의 상대 위치를 입력합니다.
y : 해당 레일을 기준으로 Y 축의 상대 위치를 입력합니다.
오브젝트 : 반복 배치할 오브젝트 인덱스를 순서대로 입력합니다. 배치를 종료할 때 까지 오브젝트가 순서대로 반복해서 배치됩니다.
* 이 명령어는 1.3.0 버전에서 다음 형태로 변경됩니다.
PatternStart(인덱스, 배치간격, 배치각도, x, y, 오브젝트0, 오브젝트1, ...);

PatternEnd(인덱스);
인덱스 : 반복 배치를 종료할 인덱스를 입력합니다.

FreeObj(오브젝트, 배치각도, x, y, y회전);
오브젝트 : 배치할 오브젝트 인덱스를 입력합니다.
배치각도 : 오브젝트의 배치 각도로 사용할 간격을 입력합니다.
x : 해당 레일을 기준으로 X 축의 상대 위치를 입력합니다.
y : 해당 레일을 기준으로 Y 축의 상대 위치를 입력합니다.
y회전 : 해당 레일을 기준으로 Y 축의 회전 값을 입력합니다.

3DSound(사운드, x, y);
사운드 : 배치할 사운드 인덱스를 입력합니다.
x : 해당 레일을 기준으로 X 축의 상대 위치를 입력합니다.
y : 해당 레일을 기준으로 Y 축의 상대 위치를 입력합니다.
* 이 명령어는 1.3.0 버전에서 다음 형태로 변경됩니다.
Doppler(사운드, x, y);

#정의;
#else;
#;
분기문을 설정합니다. 분기는 시나리오 파일에서 설정한 Defines 정의 유무에 따라 처리됩니다.
분기문을 연속 배치하면 else if 와 같은 형태로 동작하며, else 분기를 이용할 수도 있습니다.
반드시 #; 을 입력해서 분기 종료를 호출합니다.
* 이 명령어는 1.3.0 버전에서 다음과 같은 스크립트 문법 형태로 변경됩니다.
#정의
{
}
#else
{
}

* 이 네임스페이스는 1.3.0 버전에서 다음 형태로 변경됩니다.
#Map
{
#Main
{
Curve(곡선반경, 캔트);
Pitch(구배);
CurveTransition();
PitchTransition();
}

#이름
{
Position(x, y, 곡선보간);
}

#Main / #이름 공통
{
위치;
PatternStart(인덱스, 배치간격, 배치각도, x, y, 오브젝트0, 오브젝트1, ...);
PatternEnd(인덱스);
FreeObj(오브젝트, 배치각도, x, y, y축회전);
Doppler(사운드, x, y);

#정의
{
}
#else
{
}
}
}


튜토리얼

Coming soon...


Copyright © 2017 Jeminie All rights reserved.