동방탄막풍/ph3 함수

동방탄막풍의 ph3 버전에서 사용되는 스크립트 함수들에 대한 설명이다. 최종 버전인 .0 기준이다. 문서 작성에는 공식 홈페이지의 help 글을 참고하였다.

편의상 real 변수는 소문자 알파벳, char 변수는 대문자 알파벳, bool 변수는 T/F로 표시하였다.

공통 함수

수학

  • min(a,b)
    a와 b 중 작은 수를 취득한다.
  • max(a,b)
    a와 b 중 큰 수를 취득한다.
  • cos(a)
    a의 코사인 값을 취득한다. 삼각함수는 60분법을 사용한다.
  • sin(a)
    a의 사인 값을 취득한다. 삼각함수는 60분법을 사용한다.
  • tan(a)
    a의 탄젠트 값을 취득한다. 삼각함수는 60분법을 사용한다.
  • acos(a)
    a의 역코사인(arccos) 값을 취득한다. 삼각함수는 60분법을 사용한다.
  • asin(a)
    a의 역사인(arcsin) 값을 취득한다. 삼각함수는 60분법을 사용한다.
  • atan(a)
    a의 역탄젠트(arctan) 값을 취득한다. 삼각함수는 60분법을 사용한다.
  • atan2(a,b)
    좌표평면에서 원점과 (a,b)를 잇는 선분과 x축 사이의 각도를 취득한다. 예를 들어 총알의 각도를 atan2(1,0)으로 하면 총알이 정면으로 날아오고, atan2(1,1)로 하면 정면 기준 반시계 방향으로 45도만큼 기울어진 방향으로 날아온다.
  • rand(a,b)
    a 이상 b 이하의 난수를 취득한다.
  • round(a)
    a를 반올림한 정수를 취득한다.
  • truncate(a)
    a의 소숫점 아래 값을 지워 정수로 만든 값을 취득한다. trunc(a)와 같다. 예를 들어 truncate(2.5)의 값은 2, truncate(-2.5)의 값은 -2이다.
  • ceil(a)
    a를 올림한 정수를 취득한다. 예를 들어 ceil(2.5)의 값은 3, ceil(-2.5)의 값은 -2이다.
  • floor(a)
    a를 내림한 정수를 취득한다. 예를 들어 floor(2.5)의 값은 2, floor(-2.5)의 값은 -3이다.
  • absolute(a)
    a의 절댓값을 취득한다. 예를 들어 absolute(-2.5)의 값은 2.5이다.
  • modc(a,b)
    a를 b로 나눈 나머지를 취득한다. a%b와 같다.

문자열 조작

패스 관련

시간 관련

디버그 관련

공동 데이터

음악 조작 관련

키 입력

그림 묘사

3D 카메라

2D 카메라

스크립트 조작

시스템 관련

플레이어 기체 관련

적 관련

탄 관련

  • DeleteShotAll(a,b)
    화면상의 적탄을 전부 지우는 함수이다.
    a는 삭제하는 탄의 종류를 가리키며, TYPE_ALL, TYPE_SHOT가 들어갈 수 있다. TYPE_CHILD도 있으나 미실장이다. TYPE_ALL은 적탄 전체를, TYPE_SHOT은 스펠(폭탄) 내성이 없는 탄 전체를 지운다.
    b는 탄을 삭제하는 방법을 가리키며, TYPE_IMMEDIATE, TYPE_FADE, TYPE_ITEM이 들어갈 수 있다. TYPE_IMMEDIATE는 즉시 삭제, TYPE_FADE는 잔상을 남기며 삭제하며, TYPE_ITEM은 삭제된 탄을 전부 점수 아이템으로 바꾼다.
  • DeleteShotInCircle(a,b,c,d,e)
    주어진 원 안의 적탄만 전부 지우는 함수이다. a와 b는 DeleteShotAll 함수와 같다. c는 원의 x좌표, d는 원의 y좌표, e는 원의 반지름이다.
  • CreateShotA1(a,b,c,d,e,f)
    일정한 속도의 탄을 발사하는 함수이다. a는 x좌표, b는 y좌표, c는 속도, d는 각도, e는 탄의 모양, f는 발사까지 지연 시간이다.
  • CreateShotA2(a,b,c,d,e,f,g,h)
    등가속도 운동을 하는 탄을 발사하는 함수이다. a는 x좌표, b는 y좌표, c는 초기 속도, d는 각도, e는 가속도, f는 최대(최소) 속도, g는 탄의 모양, h는 발사까지 지연 시간이다.
  • CreateShotOA1(a,b,c,d,e)
    지정한 오브젝트 탄을 일정한 속도로 발사하는 함수이다. a는 오브젝트의 ID, b는 속도, c는 각도, d는 탄의 모양, e는 발사까지 지연 시간이다.
  • CreateShotB1(a,b,c,d,e,f)
    일정한 속도의 탄을 발사하는 함수이다. CreateShotA1 함수와는 달리 속도와 각도가 아닌 x축과 y축 방향 속도를 정해준다. a는 x좌표, b는 y좌표, c는 x축 방향 속도, d는 y축 방향 속도, e는 탄의 모양, f는 발사까지 지연 시간이다.
  • CreateShotB2(a,b,c,d,e,f,g,h,i,j)
    등가속도 운동을 하는 탄을 발사하는 함수이다. CreateShotB2 함수와는 달리 속도와 각도가 아닌 x축과 y축 방향 속도와 가속도를 정해준다. a는 x좌표, b는 y좌표, c는 x축 방향 초기 속도, d는 y축 방향 초기 속도, e는 x축 방향 가속도, f는 y축 방향 가속도, g는 x축 방향 최대(최소) 속도, h는 y축 방향 최대(최소) 속도, i는 탄의 모양, j는 발사까지 지연 시간이다.
  • CreateShotOB1(a,b,c,d,e)
    지정한 오브젝트 탄을 일정한 속도로 발사하는 함수이다. CreateShotOA1 함수와는 달리 속도와 각도가 아닌 x축과 y축 방향 속도를 정해준다. a는 오브젝트의 ID, b는 x축 방향 속도, c는 y축 방향 속도, d는 탄의 모양, e는 발사까지 지연 시간이다.
  • CreateLooseLaserA1(a,b,c,d,e,f,g,h)
    지정한 위치에서 등속으로 레이저 형태의 탄을 발사하는 함수이다. a는 x좌표, b는 y좌표, c는 속도, d는 각도, e는 레이저의 길이, f는 레이저의 폭, g는 레이저의 모양, h는 발사까지 지연 시간이다.
  • CreateStraightLaserA1(a,b,c,d,e,f,g,h)
    지정한 위치에 설치형 레이저를 만드는 함수이다. a는 설치점의 x좌표, b는 y좌표, c는 레이저의 각도, d는 레이저의 길이, e는 레이저의 폭, f는 소멸까지 걸리는 시간, g는 레이저의 모양, h는 레이저 설치까지 지연 시간이다.
  • CreateCurveLaserA1(a,b,c,d,e,f,g,h)
    지정한 위치에서 일정한 속도로 곡선 레이저를 발사하는 함수이다. a는 x좌표, b는 y좌표, c는 속도, d는 각도, e는 레이저의 길이, f는 레이저의 폭, g는 레이저의 모양, h는 발사까지 지연 시간이다.
  • SetShotIntersectionCircle(a,b,c)
    지정한 위치에 원형 충돌 판정을 만든다. 탄 오브젝트의 충돌 판정을 설정할 때 쓰인다. a는 x좌표, b는 y좌표, c는 충돌 판정의 반지름이다.
  • SetShotIntersectionLine(a,b,c,d,e)
    지정한 위치에 선형 충돌 판정을 만든다. 레이저 오브젝트의 충돌 판정을 설정할 때 쓰인다. a는 선분 한쪽 끝의 x좌표, b는 y좌표, c는 선분 반대쪽 끝의 x좌표, d는 y좌표, e는 선분의 폭이다.
  • GetShotIdInCircleA1(a,b,c)
    지정한 원 범위 안에 들어가 있는 탄 오브젝트 ID의 배열을 취득하는 함수이다. 이 함수가 플레이어 기체 스크립트에 들어가 있으면 적탄 ID의 배열을, 적 스크립트에 들어가 있으면 플레이어 기체에서 발사되는 탄의 ID 배열을 취득한다. a는 x좌표, b는 y좌표, c는 원의 반지름이다.
  • GetShotIdInCircleA2(a,b,c,d)
    지정한 원 범위 안에 들어가 있는 탄 오브젝트 ID의 배열을 취득하는 함수이다. GetShotIdInCircleA1 함수와는 달리 ID 배열을 취득하는 탄의 종류를 함수 안에서 설정한다. a는 x좌표, b는 y좌표, c는 원의 반지름이다. d에는 탄의 종류가 들어가는데, TARGET_ALL은 모든 탄, TARGET_ENEMY는 적탄, TARGET_PLAYER는 플레이어 기체에서 발사되는 탄이다.
  • GetShotCount(a)
    현재 존재하는 탄의 수를 취득하는 함수이다. a에는 탄의 종류가 들어가는데, TARGET_ALL은 모든 탄, TARGET_ENEMY는 적탄, TARGET_PLAYER는 플레이어 기체에서 발사되는 탄이다.
  • SetShotAutoDeleteClip(a,b,c,d)
    슈팅 게임을 플레이하다보면 탄이 화면 바깥으로 나가게 마련인데, 화면을 벗어난 탄은 한동안 존재하여 날아다니다가 화면 바깥에 있는 가상의 네모난 선과 접촉하게 되면 자동으로 삭제된다. 이 함수는 화면의 크기를 기준으로 했을 때 탄이 자동 삭제되는 이런 한계선을 지정해주는 함수이다. 초기치는 모두 64로 되어 있다. 너무 큰 수치를 설정하면 화면 바깥으로 탄이 나가도 탄이 한동안 삭제되지 않고 한계선을 만날 때까지 계속 데이터상에 존재하므로 게임이 느려질 우려가 커진다. a는 왼쪽 한계선, b는 위쪽 한계선, c는 오른쪽 한계선, d는 아래쪽 한계선이다.
  • GetShotDataInfoA1(a,b,c)
    탄 이미지 ID의 정보를 취득하는 함수이다. a는 탄 이미지의 ID이다. b에 TARGET_PLAYER가 들어가면 플레이어 기체에서 발사되는 탄, TARGET_ENEMY가 들어가면 적탄을 가리킨다. c에는 아래의 단어들이 들어갈 수 있다.
    • INFO_RECT: 탄 이미지를 나타내는 그림 파일에서 실제로 탄 이미지로 출력되는 범위를 [왼쪽, 위쪽, 오른쪽, 아래쪽] 형태의 배열로 출력한다.
      INFO_DELAY_COLOR: 탄이 지연될 때의 색상을 [R,G,B] 형태의 배열로 출력한다.
      INFO_BLEND: 탄 이미지가 어떤 방식으로 합성되었는지를 BLEND_ALPHA, BLEND_ADD_RGB, BLEND_ADD_ARGB 중 하나로 출력한다.
      INFO_COLLISION: 충돌 판정의 반지름 수치를 출력한다.
      INFO_COLLISION_LIST: 충돌 판정이 둘 이상 존재하는 탄일 경우, 충돌 판정의 반지름(r)과 x좌표(x), y좌표(y)를 [r,x,y]와 같은 2차원 배열의 형태로 출력한다.

아이템 관련

  • CreateItemA1(a,b,c,d)
    아이템을 출현시키는 함수이다. a에는 아래와 같은 단어들이 들어가며, b는 아이템이 생성되는 x좌표, c는 y좌표, d는 득점수를 나타낸다.
    ITEM_1UP: 익스텐드 아이템
    ITEM_1UP_S: 소형 익스텐드 아이템
    ITEM_SPELL: 스펠(폭탄) 아이템
    ITEM_SPELL_S: 소형 스펠(폭탄) 아이템
    ITEM_POWER: 파워 업 아이템
    ITEM_POWER_S: 소형 파워 업 아이템
    ITEM_POINT: 점수 아이템
    ITEM_POINT_S: 소형 점수 아이템
  • CreateItemA2(a,b,c,d,e,f)
    솟구쳤다가 천천히 낙하하는 아이템을 출현시키는 함수이다. a에 들어가는 단어는 CreateItemA1과 같지만 유저 정의 아이템을 뜻하는 ITEM_USER도 사용 가능하다. b는 아이템이 생성되는 x좌표, c는 y좌표, d는 아이템이 솟구쳐오르는 방향 지점의 x좌표, e는 y좌표, f는 득점수를 나타낸다.
  • CreateItemU1(a,b,c,d)
    유저 정의 아이템을 출현시키는 함수이다. a는 아이템의 ID, b는 아이템이 생성되는 x좌표, c는 y좌표, d는 득점수를 나타낸다.
  • CreateItemU2(a,b,c,d,e,f)
    솟구쳤다가 천천히 낙하하는 유저 정의 아이템을 출현시키는 함수이다. a는 아이템의 ID, b는 아이템이 생성되는 x좌표, c는 y좌표, d는 아이템이 솟구쳐오르는 방향 지점의 x좌표, e는 y좌표, f는 득점수를 나타낸다.
  • CollectAllItems()
    현재 존재하는 모든 아이템들을 플레이어 기체가 빨아들여 회수하게 한다.
  • CollectItemsByType(a)
    지정한 종류의 아이템만 골라서 플레이어 기체가 빨아들여 회수하게 한다. a에 들어가는 단어는 CreateItemA1과 같다.
  • CollectItemsInCircle(a,b,c)
    지정한 원 범위 안에 있는 아이템들만 플레이어 기체가 빨아들여 회수하게 한다. a는 원 중심의 x좌표, b는 y좌표, c는 반지름이다.
  • CancelCollectItems()
    플레이어 기체가 아이템들을 빨아들여 회수하는 것을 중단시킨다.
  • StartItemScript(A)
    유저 아이템 처리용 스크립트를 개시한다. A는 해당 스크립트의 경로이다.
  • LoadItemData(A)
    아이템 데이터를 로드한다. 몇 번이고 불러낼 수 있으며, 여러 번 불러들였을 경우에는 ID가 다르지 않다면 차례대로 등록된다. 이름이 같은 파일은 한 번만 읽어올 수 있다. A는 아이템 설정 파일의 경로이다.
  • ReloadItemData(A)
    아이템 데이터를 다시 로드한다. LoadItemData와 다른 점은 이름이 같은 파일도 여러 번 읽어올 수 있다는 것이다.
  • SetDefaultBonusItemEnable(T/F)
    탄 소거 시 시스템에 내장되어 있는 득점 아이템 출현 여부를 결정한다.

기타

공동 오브젝트 조작 (Obj_)

그림 묘사 오브젝트 조작 (ObjRender_)

정점 오브젝트 조작 (ObjPrim_)

2D구형 오브젝트 조작 (ObjSprite2D_)

2D구형 리스트 오브젝트 조작 (ObjSpriteList2D_)

3D구형 오브젝트 조작 (ObjSprite3D_)

3D메시 오브젝트 (ObjMesh_)

텍스트 오브젝트 조작 (ObjText_)

음성 오브젝트 조작 (ObjSound_)

파일 오브젝트 조작 (ObjFile)

텍스트 파일 오브젝트 조작 (ObjFileT_)

바이너리 파일 오브젝트 조작 (ObjFileB_)

이동 오브젝트 조작 (ObjMove_)

적 오브젝트 조작 (ObjEnemy)

보스 신 오브젝트 조작 (ObjEnemyBossScene_)

탄 (레이저 포함) 오브젝트 조작 (ObjShot_)

아이템 오브젝트 조작 (ObjItem_)

플레이어 기체 오브젝트 조작 (ObjPlayer_)

충돌 판정 오브젝트 조작 (ObjCol_)

플레이어 기체 스크립트 전용 함수

플레이어 기체 전용 함수

스펠 오브젝트 조작 (ObjSpell_)

시스템 스크립트 전용 함수

패키지 스크립트 전용 함수