ThreeBullets #11

less than 1 minute read


효과 추가

허전한 느낌을 채우기 위해서 효과를 추가해준다.
효과는 재미를 더 해주는 요소가 될 수 도 있고 시각적인 정보를 줄 수 도 있다.


피격효과

피해를 받았을 때 플레이어가 알아채기 쉽도록 시각적인 정보를 준다. 플레이에 방해되지 않으면서 충분히 알 수 있는 위치와 색을 활용한다.

하나의 생성된 이미지의 투명도를 조절하는 방식으로 재사용하기로 한다.

	hitEffect = Sprite::create(fileName);
	hitEffect->setAnchorPoint(Vec2::ZERO);
	hitEffect->setPosition(0, visibleSize.height * 0.21f);
	hitEffect->setOpacity(0);
	this->addChild(hitEffect);

이펙트로 사용할 이미지는 생성되자 마자 투명도를 0으로 해준다.

// EffectSprite.cpp
void EffectSprite::setOpacity()
{
	if (isHit)
	{
		hitEffect->setOpacity(255);
		isHit = false;
	}
}

bool 값으로 피격을 확인해서 피격을 당했다면 이미지가 보이도록한다.

void EffectSprite::effectProcess(float _dt)
{
	int opacity = hitEffect->getOpacity();
	
	if (opacity <= 0)
	{
		opacity = 0;
		return;
	}
	
	opacity -= destroySpeed * _dt;
	hitEffect->setOpacity(opacity);
}

이미지가 보였다면 다시 투명도를 서서히 줄여서 자연스럽게 사라지도록 한다.


적의 액션

직선으로 심심하게 내려오는 적의 움직임에 액션을 주기로 한다.
너무 과한 액션은 게임에 방해가 되기 때문에 단순한 동작만 하기로 한다.

// EnemySprite.cpp
void EnemySprite::OnAction()
{
	Action* rotate = RotateBy::create(3.0f, 500.0f);
	this->runAction(rotate);
}

회전 동작을 추가해주는 RotateBy를 사용한다. 이 동작을 세팅한 함수를 적이 생성되는 곳에서 호출해준다.

play