Class: Particle

파티클 이펙트에 사용할 파티클이다. 파티클 효과의 종류는 점점 투명해지면서 사라지는 것, 크기가 작아지면서 사라지는 것 등이 있다.

Usage

                    
                        new Particle(options)
                    
                
Extends:
Sprite
Parameters:
Name Type Description
options object
Properties
Name Type Description
lifeTimeopt number
initialLifeTimeopt number
isScaleFadeopt boolean
isAlphaFadeopt boolean
directionopt number
diffusenessopt number
speedopt number
coloropt Color
isColorOverlayEnableopt boolean
overlayColoropt Color
isPhysicsEnableopt boolean
transformopt Transform
rigidbodyopt RigidBody

Members

overlayColor: Color

색상 오버레이를 씌울 때 어떤 색을 씌울 것인지를 의미한다. 만약 이 색의 Alpha가 1이면 이미지 전체에 불투명한 색을 덧입히기 때문에 완전히 다른 색으로 덮히게 되어 이미지가 보이지 않는다.

Type:
{Color}
Overrides:
Sprite#overlayColor

isActive: boolean

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

Type:
{boolean}
Overrides:
Sprite#isActive

matrix: Matrix

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

Type:
{Matrix}
Overrides:
Sprite#matrix

Methods

spreadOut(deltaTime)

만약 물리효과가 적용되지 않는다면 직접 position을 변경해야한다.

Extends:
Sprite#spreadOut
Parameters:
Name Type Description
deltaTime number

이전 프레임와 현재 프레임의 시간차

draw()

도형이나 텍스트는 렌더링을 할 때 색상을 설정하여 입힐 수 있지만, 이미지는 그렇지 않다. getImageData로 캔버스의 특정 영역의 색상값을 읽어올 수 있지만, 다른 이미지와 겹쳐졌을 때에는 원하는 결과를 얻을 수 없다. 따라서 아래의 과정을 거쳐 오버레이를 씌울 수 있다.

  1. 빈 버퍼 캔버스에 미리 이미지를 그린다.
  2. 그 후 버퍼 캔버스에 컬러 오버레이를 씌운다.
  3. 완성된 버퍼 캔버스를 주 캔버스에 렌더링한다.

TODO 색깔을 입힐 수는 있지만 rgb(255, 0, 0) 처럼 빨간색만 씌운다고 할 때 이미지 전체가 빨갛게 변해버린다. 알파값을 조절해서 빨간색 오버레이를 씌운 것처럼 보이게 할 수 있지만 물빠진 색감이 되어버린다.

Overrides:
Sprite#draw

calculateMatrix()

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

render()

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

Overrides:
Sprite#render

beforeDraw()

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

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

Overrides:
Sprite#beforeDraw

afterDraw()

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

Overrides:
Sprite#afterDraw

setParent(parent)

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

Overrides:
Sprite#setParent
Parameters:
Name Type Description
parent GameObject

이 객체의 부모가 될 객체

removeChild(child)

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

Overrides:
Sprite#removeChild
Parameters:
Name Type Description
child GameObject

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

destroy()

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

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

Overrides:
Sprite#destroy