アクセサリーを表示その2
できあっがた、プログラムをどこから表示したらよいのか
大きなシーン管理は、game.cpp
ゲームのシーン管理はgamescene.cppですね
どこに表示したらよいのでしょうか
単独で表示しようとすると、場所と当たり判定で少し頭を使います。
今回、JumpRamp台のプログラムがあるので、できたら
そこのマップに追加できないかです。
CJumpRamp.hに小さなマップがあります
1がジャンプ台なので、アイテムは2としてみましょう
int jrMap[TATE][YOKO] = {
{0,0,0,2,0},
{0,0,1,0,0},
{0,1,0,0,1}
};
こんな感じですね、
1しか表示されないので、2も表示できるようにしないと
いけません。
CjumpRamp.cppの一番上にアイテムヘッダーを追加
#include "CJumpRamp.h"
#include "dx11mathutil.h"
//2022-01-01 Saturday
#include "CItem.h"
こんな感じです
void CJumpRamp::Init() 関数の一番下で、アイテムのロード関数を
呼び出します。
//2022-01-01 item 追加
//item ロード
CItem* item = GetItem();
item->Init();
こんな感じですね
itemポインターを使います。
まさにアイテムインスタンスをよびだしているようです。
描画は、たくさんのジャンプランプ台をよびだしている
ジャンプランプシーンの描画ですね
マップの中の数字が1だけでは、なしに2も
描画します
下のような感じです。
少し、ジャンプランプ台の座標をセッティングしているところが
わかりにくいですが
void SJumpRampScene::Draw() {
XMFLOAT4X4 mtx;
DX11MtxIdentity(mtx);
CItem* item = GetItem();
for (int tate = 0; tate < TATE; tate++) {
for (int yoko = 0; yoko < YOKO; yoko++) {
if (jrMap[tate][yoko] == 1) {
//matrixを取り出す
mtx = *jrArray[tate][yoko].GetWorldMatrix();
jrLoader.GetModel()->Draw(mtx);
}
//itemを描画
if (jrMap[tate][yoko] == 2) {
//matrixを取り出す
mtx = *jrArray[tate][yoko].GetWorldMatrix();
item->Draw(&mtx);
}
}
}
}
以上のような感じになります。