目的
的当てゲーム制作。自キャラに画像を持った弾を打たせたい
問題点
Playerクラスでmoveしているときに自弾を発射しようとしたらaddの部分で下記のエラーを吐いてしまう。
newしたときにコンストラクタで画像を放り込んでもエラーを吐いてしまうのでどうしたらいいのかわかりません。
例外がスローされました:読み取りアクセス違反。this->m_pStage が nullptr でした。
Playerクラスコンストラクタ
C++
1CPlayer::CPlayer(ID2D1RenderTarget *pRenderTarget) 2{ 3 m_pBitmapP = NULL; 4 CTextureLoader::CreateD2D1BitmapFromFile(pRenderTarget, _T("res\smilie.tga"), &m_pBitmapP); 5 m_bTama = true; 6 //m_pRed = NULL; 7 m_fX = 0.f; 8 m_fY = 0.f; 9}
Playerクラスmove()内
C++
1 if (GetAsyncKeyState(VK_SPACE)) { 2 if (!m_bTama) { 3 IGameObject *pObj = new CTama(m_pStage, m_fX, m_fY); 4 m_pStage->AddTama(pObj); //エラー部分。 5 } 6 m_bTama = true; 7 } 8 else 9 m_bTama = false;
以下tamaクラス
C++
1#include "stdafx.h" 2#include <d2d1.h> 3#include "tama.h" 4#include "TextureLoader.h" 5 6ID2D1Bitmap *CTama::m_pBitmap=NULL; 7ID2D1RenderTarget *CTama::pRenderTarget = NULL; 8CTama::CTama(CStage *pStage, float x, float y) 9{ 10 m_pParent = pStage; 11 m_fX = x; 12 m_fY = y; 13 m_fVX = 0; 14 m_fVY = -2.0f; 15} 16 17CTama::~CTama() 18{ 19 SAFE_RELEASE(m_pBitmap); 20} 21 22 23bool CTama::move() { 24 m_fY += m_fVY; 25 if (m_fY < -10) 26 return false; 27 return true; 28} 29 30void CTama::draw(ID2D1RenderTarget *pRenderTarget) { 31 D2D1_RECT_F rc; 32 D2D1_SIZE_F size; 33 size = m_pBitmap->GetSize(); 34 rc.left = m_fX; 35 rc.top = m_fY + m_fVY; 36 rc.right = rc.left + size.width; 37 rc.bottom = rc.top + size.height; 38 pRenderTarget->DrawBitmap(m_pBitmap, rc, 1.0f, D2D1_BITMAP_INTERPOLATION_MODE::D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR); 39} 40 41bool CTama::collide(float x, float y, float w, float h) { 42 return false; 43} 44bool CTama::collide(IGameObject *pObj) { 45 return false; 46} 47 48void CTama::Restore(ID2D1RenderTarget *pRT){ 49 SAFE_RELEASE(m_pBitmap); 50 CTextureLoader::CreateD2D1BitmapFromFile(pRT, _T("res\tama.png"), &m_pBitmap); 51 //m_pParent = pStage; 52} 53void CTama::Finalize() { 54 SAFE_RELEASE(m_pBitmap); 55}
回答1件
あなたの回答
tips
プレビュー