Class: ParticleEffect

폭죽이 터지는 효과나 탄환 궤적 효과 등을 만드는 객체다.

Usage

                    
                        new ParticleEffect(options)
                    
                
Extends:
GameObject
Parameters:
Name Type Description
options object
Properties
Name Type Description
isEnableopt boolean
durationopt number
isScaleFadeopt boolean
isAlphaFadeopt boolean
countPerSecondopt number
directionopt number
diffusenessopt number
speedopt number
lifeTimeopt number
imagePathopt string
isParticlePhysicsEnableopt boolean
coloropt Color
isColorOverlayEnableopt boolean
overlayColoropt Color
transformopt Transform
rigidbodyopt RigidBody

Members

defaultParticleImage: string

파티클 이미지가 없을 때 기본으로 사용할 이미지의 경로

Type:
{string}
Extends:
GameObject#defaultParticleImage
Default Value:
/src/engine/assets/defaultParticleImage.png

duration

파티클 이펙트의 지속시간을 말한다. 이 값이 0이라면 파티클 이펙트가 무한히 재생된다. 이 값이 3이라면 3초 동안만 파티클 이펙트가 재생된다. 기본값은 0이다.

Extends:
GameObject#duration

isScaleFade: boolean

이 값이 true라면 파티클이 점점 크기가 작아지는 효과를 낸다. 기본값은 true다.

Type:
{boolean}
Extends:
GameObject#isScaleFade

countPerSecond: number

1초동안 생성할 파티클의 개수를 의미한다. 파티클 생성 주기는 이 값에 의해 결정된다. 값의 범위는 1 ~ 100이다. 기본값은 10이다.

Type:
{number}
Extends:
GameObject#countPerSecond

direction: number

파티클이 생성되어 퍼져나가는 주 방향을 의미한다. 값의 범위는 0 ~ 360이다. 기본값은 0(degree)이다.

Type:
{number}
Extends:
GameObject#direction

diffuseness: number

파티클이 생성되고 나서 퍼져나갈 때 퍼짐 정도를 의미한다. 파티클이 퍼져나가는 방향은 최종적으로 아래에 명시된 범위이다. direction - diffuseness ~ direction + diffuseness

만약 direction이 90도이고 diffuseness가 30도라면 파티클은 60도 ~ 120도 사이 방향중에서 랜덤하게 결정된 방향으로 퍼진다. 값의 범위는 0 ~ 180이다. 기본값은 30(degree)이다

Type:
{number}
Extends:
GameObject#diffuseness

speed: number

파티클이 날아가는 속도를 의미한다. 값이 낮을수록 파티클이 멀리 퍼지지 않게 된다. 값의 범위는 10 ~ 1000이다. 기본값은 10이다.

Type:
{number}
Extends:
GameObject#speed

lifeTime: number

lifeTime은 생성된 파티클이 몇 초동안 화면에 보일지를 의미한다. 값의 범위는 0.1 ~ 10.0이다. 기본값은 3초다.

Type:
{number}
Extends:
GameObject#lifeTime

imagePath: string

파티클의 이미지 경로를 의미한다. 기본값으로는 엔진에 딸린 이미지를 불러오게 된다.

Type:
{string}
Extends:
GameObject#imagePath

isParticlePhysicsEnable: boolean

만약 isPhysicsEnabled가 true라면, 파티클에도 물리효과가 적용된다. 기본값은 false다.

Type:
{boolean}
Extends:
GameObject#isParticlePhysicsEnable

accumulatedTime: number

파티클 효과가 켜진 후 지난 시간을 나타낸다. elapsedTime과 다른 점은 이 값은 파티클 생성에 사용되기 때문에 이 값이 unitTime보다 커질 경우 파티클을 생성하게 된다.

Type:
{number}
Extends:
GameObject#accumulatedTime

isActive: boolean

이 객체가 활성상태인지 의미한다. 만약 이 값이 false라면 update와 render가 실행되지 않는다. 이 값이 false라면 물리엔진에서도 수집하지 않는다. 기본값은 true다.

Type:
{boolean}
Overrides:
GameObject#isActive

matrix: Matrix

이 객체의 transform을 행렬로 나타낸 결과다. canvas에서 좌표, 회전, 규모를 이용해 물체를 그리려면 행렬을 이용해야한다. 그래서 이 객체의 transform을 canvas에서 활용할 수 있게 matrix로 변환하여 저장한다.

Type:
{Matrix}
Overrides:
GameObject#matrix

Methods

calculateMatrix()

transform을 matrix로 변환한다. 이 때 부모 객체가 있다면 행렬곱을 수행해 두 matrix를 결합한다. 이 객체의 transform만 변환을 수행하지 않고 이 객체의 자식들에게도 calculateMatrix를 호출한다.

render()

먼저 선형보간한 matrix를 사용해 context에 등록한다. 그 다음 draw()를 통해 물체를 렌더링한다. 이 객체를 상속받은 Rect나 Circle처럼 자식객체에 따라 각각 다른 렌더링이 수행된다. 그 후 이 객체의 모든 자식들을 렌더링한다.

Overrides:
GameObject#render

beforeDraw()

렌더링 전에 색상값을 갱신한다거나 다른 작업이 미리 처리되어야 하는 경우 이 함수를 오버라이드해서 사용하면 된다.

이 객체에서는 기본적으로 색상값을 적용시키기 위해 globalAlpha값을 조절한다. context2d.save()를 통해 현재 설정값을 저장해두었으므로, 마음대로 변경 후 context2d.restore()로 되돌리게 된다. 따라서 현재 설정값이 자식들의 렌더링에 사용된다.

draw()

이 함수는 GameObject를 상속받은 객체마다 다르게 동작한다. GameObject 자체는 렌더링할 대상이 없지만 Sprite나, Rect, Text 등 GmaeObject를 상속받은 객체들은 명확히 렌더링할 대상이 존재한다. 그 때 이 함수안에서 어떻게 렌더링할건지 정의를 해 놓으면 된다. super.render()를 먼저 호출하고 대상을 렌더링할 경우 이미 렌더링된 자식 오브젝트를 덮어씌워 렌더링할 수 있으므로 렌더링만큼은 draw 함수 내에서만 정의를 하는게 좋다.

Overrides:
GameObject#draw

afterDraw()

일반적으로 beforeDraw()에서 전처리했던 것을 원래대로 돌리는 작업을 한다. beforeDraw()를 오버라이드했다면 이 함수도 오버라이드하여 수정된 context2d를 원래대로 돌려놓아야 한다.

setParent(parent)

인자로 받은 객체와 이 객체 사이에 부모-자식 관계를 만든다. 만약 이 객체의 부모가 이미 있다면, 그 부모의 자식 테이블에서 이 객체를 제거하고, 새로운 부모의 자식 테이블에 이 객체를 추가한다.

Parameters:
Name Type Description
parent GameObject

이 객체의 부모가 될 객체

removeChild(child)

인자로 전달받은 객체가 자식 테이블에 존재한다면, 그 객체를 자식 테이블에서 제거하고, 씬 객체의 자식 테이블에 추가한다.

Parameters:
Name Type Description
child GameObject

자식 리스트에서 지워질 자식 객체

destroy()

이 객체를 씬으로부터 제거한다. 이 객체의 자식 테이블에 있는 모든 객체들도 연달아 제거된다.

이 객체를 제거하기위해 DestroyManager에 등록한다. 이 객체가 등록되었다면 업데이트가 끝난 직후 DestroyManager가 등록된 객체들을 제거한다.

Overrides:
GameObject#destroy