void BodyInst::AddAngularForce(float x, float y, float z, myBody *b) { b->angularForce[0] += AngleToRad(x); b->angularForce[1] += AngleToRad(y); b->angularForce[2] += AngleToRad(z); }
// 回転・スケーリング・アルファオプション付き絵画(スプライトを使用) void CMglImage::DrawEx( float fScaleX, float fScaleY, float fRotationCenterX, float fRotationCenterY, float fAngle, float x, float y, RECT *srcRect, D3DCOLOR color ) // float x, float y, RECT *srcRect, D3DCOLOR color, DWORD dwAlphaOption ) { CreateCheck(); // Createチェック // srcRectにNULLを指定された場合はフルで絵画 RECT _srcRect; if ( srcRect == NULL ) { srcRect = &_srcRect; _Rect( 0, 0, m_nBmpSizeX, m_nBmpSizeY, srcRect ); } // 中心基点絵画機能 if ( m_bCenterDraw == TRUE ) { int nSizeX = srcRect->right - srcRect->left; int nSizeY = srcRect->bottom - srcRect->top; x -= (nSizeX/2) * fScaleX; y -= (nSizeY/2) * fScaleY; } // x, yをD3DXVECTOR2構造体に格納 D3DXVECTOR2 vctPos; vctPos.x = x; vctPos.y = y; // スケール D3DXVECTOR2 vctScale; vctScale.x = fScaleX; vctScale.y = fScaleY; // 回転の中心 D3DXVECTOR2 vctRtCenter; vctRtCenter.x = (srcRect->right - srcRect->left) * fRotationCenterX * fScaleX; vctRtCenter.y = (srcRect->bottom - srcRect->top) * fRotationCenterY * fScaleY; /* スプライトはアルファオプション効かないっぽい // アルファオプション DWORD dwAlphaOptionBkup=0; if ( dwAlphaOption != MGL_ALPHA_OPT_NOCHANGE ) { // 戻す時のためにバックアップを取っておく dwAlphaOptionBkup = m_myudg->GetAlphaMode(); m_myudg->SetAlphaMode( dwAlphaOption ); }*/ // 角度からRadianに。更に左回転になっているので右回転に float fRad = AngleToRad(-fAngle); // 絵画 MyuAssert( m_pSprite->Draw( m_pTexture, srcRect, &vctScale, &vctRtCenter, fRad, &vctPos, color ), D3D_OK, "CMglImage::Draw() m_pSprite->Draw()に失敗" ); /* スプライトはアルファオプション効かないっぽい // アルファオプションを元に戻す if ( dwAlphaOption != MGL_ALPHA_OPT_NOCHANGE ) { m_myudg->SetAlphaMode( dwAlphaOptionBkup ); }*/ }