您的位置:首页 > 其它

Direct3D的血条制作问题

2016-12-07 13:17 274 查看
刚好在做人物的血条公告板,发现一个诡异的地方,那就是,一开始血条一直在人物的上方,之后死亡了,换位置了就不在人物上方了。

之后发现他是按照我的人物的移动半径来旋转血条的。但是这不是我想要的,因为血条永远都要在人物上方嘛。因为以前学过opengl的关系,所以后来想到了是要将矩阵的旋转和平移分开写,要先旋转在平移,因为在原点旋转了,那就不会再影响到后面的平移了。

这里使用DX封装好的函数:

D3DXMATRIX * D3DXMatrixTranslation(

 D3DXMATRIX * pOut,

 FLOAT x,

 FLOAT y,

 FLOAT z

);

第一个参数是返回平移矩阵,第二个参数是X轴的平移量,第三个参数是Y轴的平移量,第四个参数是Z轴的平移量。
matView = V;
D3DXMATRIX matBillboard;
D3DXMatrixIdentity(&matBillboard);
matBillboard._11 = matView._11;
matBillboard._13 = matView._13;
matBillboard._31 = matView._31;
matBillboard._33 = matView._33;
D3DXMatrixInverse(&matBillboard,NULL,&matBillboard);
D3DXMATRIX matRole;
D3DXMatrixIdentity(&matRole);
D3DXMATRIX matTransform;
D3DXMatrixTranslation(&matTransform,x,y,z);
matRole =  matBillboard * matTransform * matRole;
g_device->SetTransform(D3DTS_WORLD,&matRole);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Direct3D 移动 人物