Class: ParticleEffect
폭죽이 터지는 효과나 탄환 궤적 효과 등을 만드는 객체다.
Description
Usage
new ParticleEffect(options)
- Extends:
- GameObject
Parameters:
Name | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options
|
object |
Properties
|
Members
defaultParticleImage: string
파티클 이미지가 없을 때 기본으로 사용할 이미지의 경로
- Type:
- {string}
- Extends:
- GameObject#defaultParticleImage
- Default Value:
- /src/engine/assets/defaultParticleImage.png
isEnable: boolean
파티클이 생성되려면 isEnable이 true여야 한다. 기본값은 false다.
- Type:
- {boolean}
- Extends:
- GameObject#isEnable
duration
파티클 이펙트의 지속시간을 말한다. 이 값이 0이라면 파티클 이펙트가 무한히 재생된다. 이 값이 3이라면 3초 동안만 파티클 이펙트가 재생된다. 기본값은 0이다.
- Extends:
- GameObject#duration
isScaleFade: boolean
이 값이 true라면 파티클이 점점 크기가 작아지는 효과를 낸다. 기본값은 true다.
- Type:
- {boolean}
- Extends:
- GameObject#isScaleFade
isAlphaFade: boolean
이 값이 true라면 파티클이 점점 투명해진다. 기본값은 true다.
- Type:
- {boolean}
- Extends:
- GameObject#isAlphaFade
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
elapsedTime: number
파티클 효과가 켜진 후 지난 시간을 나타낸다.
- Type:
- {number}
- Extends:
- GameObject#elapsedTime
accumulatedTime: number
파티클 효과가 켜진 후 지난 시간을 나타낸다. elapsedTime과 다른 점은 이 값은 파티클 생성에 사용되기 때문에 이 값이 unitTime보다 커질 경우 파티클을 생성하게 된다.
- Type:
- {number}
- Extends:
- GameObject#accumulatedTime
context2d: CanvasRenderingContext2d
canvas에 이 객체를 렌더링할 때 사용할 context다.
- Type:
- {CanvasRenderingContext2d}
- Overrides:
- GameObject#context2d
name: string
생성된 객체의 이름을 말한다. 기본값으로는 생성자의 이름을 저장한다.
- Type:
- {string}
- Overrides:
- GameObject#name
isVisible: boolean
화면에 이 객체를 그릴 것인지를 의미한다. 기본값은 true다.
- Type:
- {boolean}
- Overrides:
- GameObject#isVisible
isActive: boolean
이 객체가 활성상태인지 의미한다. 만약 이 값이 false라면 update와 render가 실행되지 않는다. 이 값이 false라면 물리엔진에서도 수집하지 않는다. 기본값은 true다.
- Type:
- {boolean}
- Overrides:
- GameObject#isActive
layer: Layer
객체의 레이어다.
- Type:
- {Layer}
- Overrides:
- GameObject#layer
rigidbody: RigidBody
물리효과를 위한 강체다.
- Type:
- {RigidBody}
- Overrides:
- GameObject#rigidbody
transform: Transform
이 객체의 좌표, 크기, 각도 등을 의미한다.
- Type:
- {Transform}
- Overrides:
- GameObject#transform
isPhysicsEnable: boolean
이 객체에 물리효과를 적용할건지를 의미한다. 기본적으론 적용하지 않는다.
- Type:
- {boolean}
- Overrides:
- GameObject#isPhysicsEnable
collider: BoxCollider
이 객체의 Collision 타입을 나타낸다. 기본값으로는 상자 형태(BoxCollider)를 사용한다.
- Type:
- {BoxCollider}
- Overrides:
- GameObject#collider
color: Color
렌더링에 사용될 색상값이다.
- Type:
- {Color}
- Overrides:
- GameObject#color
matrix: Matrix
이 객체의 transform을 행렬로 나타낸 결과다. canvas에서 좌표, 회전, 규모를 이용해 물체를 그리려면 행렬을 이용해야한다. 그래서 이 객체의 transform을 canvas에서 활용할 수 있게 matrix로 변환하여 저장한다.
- Type:
- {Matrix}
- Overrides:
- GameObject#matrix
previousMatrix: Matrix
이전 프레임의 matrix와 현재 프레임의 matrix를 선형보간하기 위해 이전 프레임의 matrix를 저장해야한다.
- Type:
- {Matrix}
- Overrides:
- GameObject#previousMatrix
childList: array
이 객체의 자식들을 저장할 테이블이다.
- Type:
- {array}
- Overrides:
- GameObject#childList
parent: GameObject
이 객체의 부모 객체다. 부모의 matrix를 이용해 자신의 matrix를 만들고, 이 객체를 삭제할 때 부모에 의해 삭제되기 때문에 이 객체의 부모를 기억해야 한다.
- Type:
- {GameObject}
- Overrides:
- GameObject#parent
- Default Value:
- undefined
Methods
update(deltaTime)
만약 isEnable이 true라면 일정 시간마다 파티클을 생성한다.
- Extends:
- GameObject#update
- Overrides:
- GameObject#update
Parameters:
Name | Type | Description |
---|---|---|
deltaTime
|
number |
이전 프레임와 현재 프레임의 시간차 |
run()
파티클 효과를 켠다.
- Extends:
- GameObject#run
stop()
파티클 효과를 끈다.
- Extends:
- GameObject#stop
integrateForce(deltaTime)
가속도를 적분하여 속도에 누적한다.
- Overrides:
- GameObject#integrateForce
Parameters:
Name | Type | Description |
---|---|---|
deltaTime
|
number |
이전 프레임과 현재 프레임의 시간차 |
integrateVelocity(deltaTime)
속도를 적분하여 좌표값에 누적한다.
- Overrides:
- GameObject#integrateVelocity
Parameters:
Name | Type | Description |
---|---|---|
deltaTime
|
number |
이전 프레임과 현재 프레임의 시간차 |
calculateMatrix()
transform을 matrix로 변환한다. 이 때 부모 객체가 있다면 행렬곱을 수행해 두 matrix를 결합한다. 이 객체의 transform만 변환을 수행하지 않고 이 객체의 자식들에게도 calculateMatrix를 호출한다.
- Overrides:
- GameObject#calculateMatrix
render()
먼저 선형보간한 matrix를 사용해 context에 등록한다. 그 다음 draw()를 통해 물체를 렌더링한다. 이 객체를 상속받은 Rect나 Circle처럼 자식객체에 따라 각각 다른 렌더링이 수행된다. 그 후 이 객체의 모든 자식들을 렌더링한다.
- Overrides:
- GameObject#render
hasParentGameObject() → {boolean}
이 객체의 부모가 존재한다면 true를 반환한다.
- Overrides:
- GameObject#hasParentGameObject
Returns:
multiplyParentMatrix()
자신의 transform을 matrix로 변환한 것과 부모의 matrix를 행렬곱한다.
- Overrides:
- GameObject#multiplyParentMatrix
setTransform()
계산된 matrix를 context2d에 적용한다.
- Overrides:
- GameObject#setTransform
beforeDraw()
렌더링 전에 색상값을 갱신한다거나 다른 작업이 미리 처리되어야 하는 경우 이 함수를 오버라이드해서 사용하면 된다.
이 객체에서는 기본적으로 색상값을 적용시키기 위해 globalAlpha값을 조절한다. context2d.save()를 통해 현재 설정값을 저장해두었으므로, 마음대로 변경 후 context2d.restore()로 되돌리게 된다. 따라서 현재 설정값이 자식들의 렌더링에 사용된다.
- Overrides:
- GameObject#beforeDraw
draw()
이 함수는 GameObject를 상속받은 객체마다 다르게 동작한다. GameObject 자체는 렌더링할 대상이 없지만 Sprite나, Rect, Text 등 GmaeObject를 상속받은 객체들은 명확히 렌더링할 대상이 존재한다. 그 때 이 함수안에서 어떻게 렌더링할건지 정의를 해 놓으면 된다. super.render()를 먼저 호출하고 대상을 렌더링할 경우 이미 렌더링된 자식 오브젝트를 덮어씌워 렌더링할 수 있으므로 렌더링만큼은 draw 함수 내에서만 정의를 하는게 좋다.
- Overrides:
- GameObject#draw
afterDraw()
일반적으로 beforeDraw()에서 전처리했던 것을 원래대로 돌리는 작업을 한다. beforeDraw()를 오버라이드했다면 이 함수도 오버라이드하여 수정된 context2d를 원래대로 돌려놓아야 한다.
- Overrides:
- GameObject#afterDraw
getName() → {string}
이 객체의 이름을 반환한다.
- Overrides:
- GameObject#getName
Returns:
setName(name)
이 객체의 이름을 설정한다. 기본값으로는 생성자의 이름을 저장하게 된다.
- Overrides:
- GameObject#setName
Parameters:
Name | Type | Description |
---|---|---|
name
|
string |
객체의 이름 |
activate()
isActive를 true로 설정한다.
- Overrides:
- GameObject#activate
deactivate()
isActive를 false로 설정한다.
- Overrides:
- GameObject#deactivate
show()
isVisible을 true로 설정한다.
- Overrides:
- GameObject#show
hide()
isVisible을 false로 설정한다.
- Overrides:
- GameObject#hide
getLayer() → {Layer}
레이어를 반환한다.
- Overrides:
- GameObject#getLayer
Returns:
setParent(parent)
인자로 받은 객체와 이 객체 사이에 부모-자식 관계를 만든다. 만약 이 객체의 부모가 이미 있다면, 그 부모의 자식 테이블에서 이 객체를 제거하고, 새로운 부모의 자식 테이블에 이 객체를 추가한다.
- Overrides:
- GameObject#setParent
Parameters:
Name | Type | Description |
---|---|---|
parent
|
GameObject |
이 객체의 부모가 될 객체 |
removeChild(child)
인자로 전달받은 객체가 자식 테이블에 존재한다면, 그 객체를 자식 테이블에서 제거하고, 씬 객체의 자식 테이블에 추가한다.
- Overrides:
- GameObject#removeChild
Parameters:
Name | Type | Description |
---|---|---|
child
|
GameObject |
자식 리스트에서 지워질 자식 객체 |
removeParent()
이 객체의 부모와 이 객체 사이의 관계를 끊는다. 이 객체는 부모로부터 떨어져 나오게 되는데, 씬 객체를 새로운 부모로 설정한다.
- Overrides:
- GameObject#removeParent
addChild(child)
자식 목록에 인자로 전달된 객체를 추가한다.
- Overrides:
- GameObject#addChild
Parameters:
Name | Type | Description |
---|---|---|
child
|
GameObject |
이 객체의 자식으로 추가될 객체 |
onCollision(other)
이 객체가 물리효과에 의해 다른 객체와 충돌했을 때 이 함수가 호출된다.
- Overrides:
- GameObject#onCollision
Parameters:
Name | Type | Description |
---|---|---|
other
|
GameObject |
이 객체와 충돌한 다른 객체 |
addPosition(position)
이 객체의 좌표값에 특정값을 더한다.
- Overrides:
- GameObject#addPosition
Parameters:
Name | Type | Description |
---|---|---|
position
|
Vector |
이 객체의 좌표에 더해질 좌표값 |
setPosition(position)
이 객체의 좌표값을 특정값으로 설정한다.
- Overrides:
- GameObject#setPosition
Parameters:
Name | Type | Description |
---|---|---|
position
|
Vector |
이 객체의 좌표로 설정될 좌표값 |
getPosition() → {Vector}
이 객체의 좌표값을 반환한다.
- Overrides:
- GameObject#getPosition
Returns:
getWorldPosition() → {Vector}
이 객체의 화면상 좌표값을 반환한다. Canvas에 이 객체를 렌더링할 때 사용하는 matrix에서 x, y값을 벡터로 만들어 반환한다.
- Overrides:
- GameObject#getWorldPosition
Returns:
addScale(이)
이 객체의 크기를 특정값만큼 변경한다.
- Overrides:
- GameObject#addScale
Parameters:
Name | Type | Description |
---|---|---|
이
|
Vector |
객체의 규모에 더해질 규모값 |
setScale(이)
이 객체의 크기를 특정값으로 설정한다.
- Overrides:
- GameObject#setScale
Parameters:
Name | Type | Description |
---|---|---|
이
|
Vector |
객체의 규모로 설정될 규모값 |
getScale() → {Vector}
이 객체의 규모(스케일값)값을 반환한다. 크기(size)를 반환하는게 아니다!
- Overrides:
- GameObject#getScale
Returns:
getWorldScale() → {Vector}
이 객체의 화면상 규모값을 반환한다.
- Overrides:
- GameObject#getWorldScale
Returns:
addRotation(degree)
이 객체의 각도(degree)를 특정값만큼 변경한다.
- Overrides:
- GameObject#addRotation
Parameters:
Name | Type | Description |
---|---|---|
degree
|
number |
이 객체의 각도에 더해질 각도값(degree) |
setRotation(degree)
이 객체의 각도(degree)를 특정값으로 설정한다.
- Overrides:
- GameObject#setRotation
Parameters:
Name | Type | Description |
---|---|---|
degree
|
number |
이 객체의 각도로 설정될 각도값(degree) |
getRotation() → {number}
이 객체의 각도(degree)를 반환한다.
- Overrides:
- GameObject#getRotation
Returns:
getWorldRotation() → {number}
이 객체의 화면상 각도(degree)를 반환한다.
- Overrides:
- GameObject#getWorldRotation
Returns:
addVelocity(velocity)
이 객체의 속도를 특정값만큼 증가시킨다.
- Overrides:
- GameObject#addVelocity
Parameters:
Name | Type | Description |
---|---|---|
velocity
|
Vector |
이 객체의 속도에 더해질 속도값 |
setVelocity(velocity)
이 객체의 속도를 특정값으로 설정한다.
- Overrides:
- GameObject#setVelocity
Parameters:
Name | Type | Description |
---|---|---|
velocity
|
Vector |
getVelocity() → {Vector}
이 객체의 속도를 반환한다.
- Overrides:
- GameObject#getVelocity
Returns:
addAcceleration(이)
이 객체의 가속도를 특정값만큼 증가시킨다.
- Overrides:
- GameObject#addAcceleration
Parameters:
Name | Type | Description |
---|---|---|
이
|
Vector |
객체의 가속도에 더해질 가속도값 |
setAcceleration(accelration)
이 객체의 가속도를 특정값으로 설정한다.
- Overrides:
- GameObject#setAcceleration
Parameters:
Name | Type | Description |
---|---|---|
accelration
|
Vector |
getAcceleration() → {Vector}
이 객체의 가속도를 반환한다.
- Overrides:
- GameObject#getAcceleration
Returns:
getSize() → {Vector}
이 객체의 물리적 크기를 반환한다.
- Overrides:
- GameObject#getSize
Returns:
getWorldSize() → {Vector}
이 객체의 화면상 물리적 크기를 반환한다. 이 객체의 크기에 화면상 규모를 곱한 값을 반환하게 된다.
- Overrides:
- GameObject#getWorldSize
Returns:
getWorldBoundary() → {Vector}
이 객체의 화면상 외형의 크기를 반환한다. 기본적으로 BoxCollider를 사용하기 때문에 상자 형태의 크기가 반환된다.
- Overrides:
- GameObject#getWorldBoundary
Returns:
getBoundary() → {Vector}
이 객체의 외형의 크기를 반환한다. 기본적으로 BoxCollider를 사용하기 때문에 상자 형태의 크기가 반환된다.
- Overrides:
- GameObject#getBoundary
Returns:
getColliderWorldPosition() → {Vector}
이 객체의 화면상 좌표값에 외형의 오프셋값을 더한 좌표를 반환한다. 이 때 오프셋에도 WorldScale을 적용해 더한다.
- Overrides:
- GameObject#getColliderWorldPosition
Returns:
getColliderOffset() → {Vector}
이 객체의 외형의 오프셋값을 반환한다.
- Overrides:
- GameObject#getColliderOffset
Returns:
getMatrix() → {Matrix}
이 객체의 matrix를 반환한다.
- Overrides:
- GameObject#getMatrix
Returns:
getBounceness() → {number}
이 객체의 탄성값을 반환한다.
- Overrides:
- GameObject#getBounceness
Returns:
getStaticFriction() → {number}
이 객체의 정지 마찰 계수를 반환한다.
- Overrides:
- GameObject#getStaticFriction
Returns:
getDynamicFriction() → {number}
이 객체의 운동 마찰 계수를 반환한다.
- Overrides:
- GameObject#getDynamicFriction
Returns:
getMass() → {number}
이 객체의 질량값을 반환한다.
- Overrides:
- GameObject#getMass
Returns:
getInverseMass() → {number}
이 객체의 질량값의 역수를 반환한다.
- Overrides:
- GameObject#getInverseMass
Returns:
destroy()
이 객체를 씬으로부터 제거한다. 이 객체의 자식 테이블에 있는 모든 객체들도 연달아 제거된다.
이 객체를 제거하기위해 DestroyManager에 등록한다. 이 객체가 등록되었다면 업데이트가 끝난 직후 DestroyManager가 등록된 객체들을 제거한다.
- Overrides:
- GameObject#destroy
isMouseOver() → {boolean}
이 객체 위에 마우스가 올라가 있는지를 반환한다. 기본적으로 worldSize값과 worldPosition을 이용해 계산한다.
- Overrides:
- GameObject#isMouseOver
Returns:
isLeftMouseClickThis() → {boolean}
마우스 왼쪽 버튼으로 이 객체를 클릭했는지를 반환한다.
- Overrides:
- GameObject#isLeftMouseClickThis
Returns:
isRightMouseClickThis() → {boolean}
마우스 오른쪽 버튼으로 이 객체를 클릭했는지를 반환한다.
- Overrides:
- GameObject#isRightMouseClickThis