はかせのラボ

私の頭の中を書いていく雑記ブログです

落ちモノパズル 絶望は忘れたころにやってくる

あいさつ

どうも、はかせです。
今回は消去時のエフェクトを付けてみようとした話です。

実装

テトリスは消去時消えるラインが真っ白になったのち
光が走るエフェクトが入ります。

なので
①消去するピースを真っ白にする
②真っ白にしたピースの上に光のテクスチャを走らせる

という処理で実装します。

①は既存のピースに白いテクスチャを設定するだけなのでカットです。

void LightMove::Update()
{
	if (!mIsEffectPlay) return;
	mFrameCount++;
	auto transform = mGameObject->GetTransform();
	auto move = 0.1f;
	auto scaleXUp = 0.01f;
	auto scaleYUp = 0.01f;
	if(mFrameCount > mEffectEndFrame / 2)
	{
		move = 0.05f;
		scaleXUp = 0.2f;
		scaleYUp = 0.1f;
	}
	transform->Position.x += move;
	transform->Scale.x += scaleXUp;
	transform->Scale.y += scaleYUp;
	if (mFrameCount >= mEffectEndFrame) mGameObject->SetEnable(false);
}

値が決め打ちなのは調整中だからです。
毎フレーム位置とサイズを動かし、
指定したフレーム数経過したらアクティブを切るだけの
簡単な処理です。

あとはこのクラスを付けたオブジェクトの位置とサイズを決定すれば
光が走ります。

位置は素直に消去したピースの列
サイズも高さ(0.1fぐらい)を基準に段数倍にします。

これで光が走るのとその位置調整が終わりました。
さっそく実行してみましょう。

そして奴はやってくる

f:id:hakase0274:20190218233428g:plain
ん~~~~~~???
なんかみたことありますねぇ???

なんかこれとか
hakase0274.hatenablog.com
これとかで
hakase0274.hatenablog.com
いたやつですねぇ・・・・orz

確かこの時は結局解決できず
また解決する必要も
神素材提供者によって消滅したので放置したやつですね。
神素材提供者紹介記事↓
hakase0274.hatenablog.com

あの時とは違い今回は光のエフェクトなので
透過がないと表現がきつそうですね・・・

いくらBlendStateを弄っても出来なかったので
シェーダー書く準備をしなきゃですね・・・

あとがき

今回は忘れたころに絶望はやってくる話でした。
シェーダーという今までとは別のアプローチが必要になってきました。

ただしれっと重そうなタスクが発生していますが、
私の今回の落ちモノパズルの開発期間は2週間を予定しています。

結果はどうであれ2週間で一旦区切らなければなりません。
それに明日からちょっとリアルの用事でかなり開発時間が毟られる予定です。

さてどうなるんでしょうねw

それでは今回はこの辺でノシ

今回作ったものはgithubに上げました
github.com