はかせのラボ

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

DirectX オプションユニット作成 ~プレイヤーに追従~

あいさつ

どうも、はかせです。
今回からオプションのユニットを作っていきます。
オプションは弾幕シューティングで自機の周りにいて一緒に攻撃してくれるやつです。

実装

とりあえず自機の周りにいて一緒に攻撃してくれるところまで作りました。
やり方は極めて単純に生成時にプレイヤーのオブジェクトを登録して
あとはプレイヤーを監視して処理を行います。

行う処理は
・プレイヤーから一定距離離れて追従
・プレイヤーが弾を打ったら一緒に打つ

ではコードです。
プレイヤーの登録や生成方法は過去上げてきたものと
変わらないので割愛します。

//プレイヤーに追従して動く
auto playerTransform = mPlayerGameObject->GetTransform();
auto transform = mGameObject->GetTransform();
transform->Position.x = playerTransform->Position.x + mOffset.x;
transform->Position.y = playerTransform->Position.y + mOffset.y;
transform->Position.z = playerTransform->Position.z + mOffset.z;
//プレイヤーが打っていたら打つ
if(mPlayerCom->IsShot())
{
	BULLET_SETTING_DATA data;
	data.transform = mGameObject->GetTransform();
	data.tag = PlayerBullet;
	data.xVectol = 0.0f;
	data.yVectol = 0.05f;
	data.texturePath = _T("Texture/Bullet3.png");
	data.scaleRatio = 0.3f;
	//弾を出す
	auto game = mBulletPool->GetBullet(data);
}

実行結果です。
youtu.be

プレイヤーの隣にはんぺんのような白い四角がいます。
これがオプションユニットです。
(画像は探すなり作るなりします)

あとがき

今回はオプションユニット作成を始めましたという話でした。
周りに同時攻撃してくれるやつがいると
途端に自機の攻撃が派手になった感じがしていいですね。

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

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