アクセサリーを表示その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);


            }

        }

    }

 

}

 

以上のような感じになります。