位置、向き、拡大率を管理するクラスを作成する
#pragma once
#include <DirectXMath.h>
using namespace DirectX;
//位置、向き、拡大率などを管理するクラス
class Transform
{
XMMATRIX matTranslate_; //移動行列
XMMATRIX matRotate_; //回転行列
XMMATRIX matScale_; //拡大行列
public:
XMFLOAT3 position_; //位置
XMFLOAT3 rotate_; //向き
XMFLOAT3 scale_; //拡大率
//コンストラクタ
Transform();
//デストラクタ
~Transform();
//各行列の計算
void Calclation();
//ワールド行列を取得
XMMATRIX GetWorldMatrix();
};
QuadクラスのDraw関数にTransformオブジェクトを渡すことで変形できるように改良する。
その後、SpriteクラスのDraw関数も対応させる
float型のx,y,zをまとめた型
XMFLOAT3 a;
a.x = 10.0f;
a.y = 20.0f;
a.z = 30.0f;
※ベクトルの計算機能は何もない
ベクトルを扱う型
XMVECTOR a;
a = XMVectorSet(10.0f, 20.0f, 30.0f,0);
こう書いてもよい
XMVECTOR a = { 10.0f, 5.0f, 3.0f, 0.0f };
※4次元まで対応してるが、普通は使わない。
※a.x = 10.0f; //こういう書き方はできない
XMFLOAT3 f; //何か入ってるとして
XMVECTOR v = XMLoadFloat3(&f);
XMVECTOR v; //何か入ってるとして
XMFLOAT3 f;
XMStoreFloat3(&f, v);