Direct3D的血条制作问题
2016-12-07 13:17
274 查看
刚好在做人物的血条公告板,发现一个诡异的地方,那就是,一开始血条一直在人物的上方,之后死亡了,换位置了就不在人物上方了。
之后发现他是按照我的人物的移动半径来旋转血条的。但是这不是我想要的,因为血条永远都要在人物上方嘛。因为以前学过opengl的关系,所以后来想到了是要将矩阵的旋转和平移分开写,要先旋转在平移,因为在原点旋转了,那就不会再影响到后面的平移了。
这里使用DX封装好的函数:
D3DXMATRIX * D3DXMatrixTranslation(
D3DXMATRIX * pOut,
FLOAT x,
FLOAT y,
FLOAT z
);
第一个参数是返回平移矩阵,第二个参数是X轴的平移量,第三个参数是Y轴的平移量,第四个参数是Z轴的平移量。
之后发现他是按照我的人物的移动半径来旋转血条的。但是这不是我想要的,因为血条永远都要在人物上方嘛。因为以前学过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);
相关文章推荐
- 在 Linux 中如何移动文件
- 如何从命令行同时移动多种文件类型
- PowerShell移动目录中指定文件的方法(非全部文件)
- 鼠标触发移动的分层菜单 层菜单moveMenu
- 基于Android实现随手指移动的ImageView
- php实现复制移动文件的方法
- 移动适配的几种方案(三种方案)
- javascript 广告移动特效的实现代码
- javascript实现图片跟随鼠标移动效果的方法
- JavaScript Select和Option列表元素上下左右移动
- JavaScript代码实现左右上下自动晃动自动移动
- JS实现网页游戏中滑块响应鼠标点击移动效果
- JS+CSS实现分类动态选择及移动功能效果代码
- 详解jQuery移动页面开发中的ui-grid网格布局使用
- jquery移动点击的项目到列表最顶端的方法
- 基于jquery实现select选择框内容左右移动添加删除代码分享
- jquery实现select选择框内容左右移动代码分享
- 使用jQuery mobile库检测url绝对地址和相对地址的方法
- jQuery实现Select左右复制移动内容
- jQuery移动web开发之页面跳转和加载外部页面的实现