CEGUI下圆形小地图实现
来源:互联网 发布:神枪手刷枪软件 编辑:程序博客网 时间:2024/04/30 21:06
第一步:小地图纹理的制作
程序截取小地图通常是我们所说的拍顶视图,有关拍顶视图的过程这里不讨论。所以跳过这一步.
第二步:读取纹理到内存中
下面是相关的代码片段:
CEGUI::Imageset* pImgSet = NULL;
if (!CEGUI::ImagesetManager::getSingletonPtr()->isImagesetPresent("picSetName"))
{
pImgSet = CEGUI::ImagesetManager::getSingleton().createImagesetFromImageFile("picSetName", "picture.jpg");
}
else
{
pImgSet = CEGUI::ImagesetManager::getSingleton().getImageset("picSetName");
}
第三步:将玩家当前所在的位置对应到地图纹理的像素点上
假设我们地图的大小是MAP_WIDTH*MAP_HEIGTH, 玩家位置是playerPos.x, playerPos.z(vector3类型的)
那么他在地图纹理上的中对应的位置是playerPos.x/MAP_WIDTH*pImgSet->getWidth(), playerPos.z/MAP_HEIGTH*pImgSet->getHeight();
公式是: 玩家位置/地图大小*纹理的大小
说明: 玩家位置/地图大小就是玩家所在的地图位置中的比例, 再乘以纹理的大小就转到了纹理中的位置.
第四步:确定纹理范围
首先要得到小地图窗口的大小。这里假设是: CEGUI::Size wndSz;
那么小地图的纹理范围是: CEGUI::Rect picRt;
picRt.d_left = playerPos.x/MAP_WIDTH*pImgSet->getWidth()-wndSz.d_width/2;
picRt.d_top = playerPos.z/MAP_HEIGTH*pImgSet->getHeight()-wndSz.d_height/2;
picRt.d_right = playerPos.x/MAP_WIDTH*pImgSet->getWidth()+wndSz.d_width/2;
picRt.d_bottom = playerPos.z/MAP_HEIGTH*pImgSet->getHeight()+wndSz.d_height/2;
第五步:渲染小地图
假设小地图窗口是 Windows* pWin;
pimgeset->undefineImage("curSmallMap");
pimgeset->defineImage("curSmallMap", picRt, Point(0, 0));
string mapProPerty = "set:";
mapProPerty += "picSetName";
mapProPerty += " image:curSmallMap";
pWin->setProperty("Image", mapProPerty);
就这样 一个方形的小地图就完成了~_~
注意第四步和第五步要放在游戏的每帧渲染里面,因为要实时更新。
本人还未实现怎么把方形的转化成圆形的地图。好像cegui不支持纹理混合的操作,但是网上看到有人说实现过
转载一下网址 http://icoder.blog.163.com/blog/static/11264634020092304365644/
有高手知道的指点一下~_~
转载或修改请说明出处
链接:http://blog.csdn.net/howlet2/archive/2009/11/26/4876093.aspx
作者:howlet
E-Mial: howlet3@126.com
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/howlet2/archive/2009/11/26/4876093.aspx
- CEGUI下圆形小地图实现
- Ogre实现圆形小地图,其实和CEGUI无关.
- cegui游戏小地图
- Cmaera圆形小地图
- [Unity3d]自制圆形小地图
- 小地图的实现
- 小地图实现方式
- 简单2步学会Unity3D 游戏圆形小地图!
- 小tip:CSS3下的圆形遮罩效果实现与应用
- 小圆形从上而下掉落
- unity3d 小地图实现思路
- MMO小地图实现方式
- unity小地图的实现
- 高德地图小实现
- 微信小程序开发笔记:为了做一个录制按钮,研究了下小程序的实时圆形进度条实现
- cegui实现帧动画
- cegui实现帧动画
- CEGUI 输入法窗口实现
- 女友在另一个城市找到了工作
- 11111111
- Android中如何修改系统时间(应用程序获得系统权限)
- boot/include/lib_in_real_mode.inc
- CGI CC
- CEGUI下圆形小地图实现
- C#通过调用API函数来安装和卸载windows服务
- boot/include/pm.inc
- Could not write to 'conf_global.php'
- CRM的本质应用
- vmware下安装ubuntu 9.10
- context.xml
- 逃兵
- request.getContextPath()用el表达式怎么写,绝对路径:request.getRealPath