登录社区:用户名: 密码: 忘记密码 网页功能:加入收藏 设为首页 网站搜索  

文档

下载

图书

论坛

安全

源码

硬件

游戏
首页 信息 空间 VB VC Delphi Java Flash 补丁 控件 安全 黑客 电子书 笔记本 手机 MP3 杀毒 QQ群 产品库 分类信息 编程网站
  立华软件园 - 安全技术中心 - 技术文档 - 入门基础 技术文章 | 相关下载 | 电子图书 | 攻防录像 | 安全网站 | 在线论坛 | QQ群组 | 搜索   
 安全技术技术文档
  · 安全配制
  · 工具介绍
  · 黑客教学
  · 防火墙
  · 漏洞分析
  · 破解专题
  · 黑客编程
  · 入侵检测
 安全技术工具下载
  · 扫描工具
  · 攻击程序
  · 后门木马
  · 拒绝服务
  · 口令破解
  · 代理程序
  · 防火墙
  · 加密解密
  · 入侵检测
  · 攻防演示
 安全技术论坛
  · 安全配制
  · 工具介绍
  · 防火墙
  · 黑客入侵
  · 漏洞检测
  · 破解方法
 其他安全技术资源
  · 攻防演示动画
  · 电子图书
  · QQ群组讨论区
  · 其他网站资源
最新招聘信息

斜视角视图(四)
发表日期:2007-01-17作者:[转贴] 出处:  

我们现在有了我们的预步进坐标。当我们准备用mx和my来从地图中绘制图形块时,我们向左移动prestep_x个象素点,向上移动prestep_y个象素点。

OK,我们现在得到了一个平滑滚动。可以考虑加入精灵的问题了。你不能用这个技术绘制一个精灵,因为他们不可能排布在一个16x16的地图内。一个精灵可能会被别的绘制的图形块覆盖的。所以我们需要的是能够在任意坐标位置上绘制我们的精灵。我们所要做的就是给我们的引擎加入能在层上绘图的能力。
这里加入一个图形块的绘制顺序。你首先绘制平整的地面对象,比如草地。然后回来绘制它上面的东西,等等。注意那些大的对象,诸如高墙,需要画在同一层里,因为它们被当作同一个对象。看起来这很难考虑,但如果你不想保留一个zbuffer,那么这的确是需要的。就用一位来工作,你最终会理解它的。

所以我们现在得在我们的结构上加入一个层:

struct MAP_STRUCTURE {
    char num_tiles;
    char tiles[10];  // 假设每个地图坐标上最多绘制10个图形块
    char height[10]; // 也假设为10
    char layer[10];  // 同上
};
MAP_STRUCTURE map[10][10];


现在把下面这些加到地图数据中:

map[0][0].layer[0] = 1;
map[0][0].layer[1] = 1;
...
map[1][1].layer[0] = 0;
...


现在使用一个这样的循环来绘制:(C语言)

current_layer = 0;
max_layers = 0;

while(1) {
    for(i=0;i<10;i++) {
        for(j=0;j<10;j++) {
            for(k=0;k<map[i][j].num;k++) {
                if(map[i][j].layer == current_layer) {
                    // 绘制图形块
                }

                if(map[i][j].layer > max_layers)
                    max_layers = map[i][j].layer;
            }
        }
    }
    current_layer++;
    if(current_layer >= max_layers)
        break;
}


现在你所要做的一切就是将你要在特定层上绘制的精灵的地图坐标和屏幕坐标联系起来,并绘制它。你可以通过比较当前绘制的图形块坐标和精灵的地图坐标x和y来实现:
(sprite_x和sprite_y是所要绘制的精灵的精美坐标)
(mx和my是当前要绘制的地图坐标)

if(mx == sprite_x / 16 && my == sprite_y / 16) {

然后你只要在这个位置上绘制精灵之前将精灵偏移一个位置就行了:

xo = sprite_x & 15;
yo = sprite_y & 15;
xx = xo - yo;
yy = (xo/2) + (yo/2);
block_draw(sprite_num,screenx-32+xx,screeny-16+yy);


好了,现在就留给你们去得到你们在斜视角视图中新发现的知识了。如果你有任何问题或建议,请发EMAIL或者慢信给我。


Jim Adams
Game Developers Network, Inc
1200 N Lamb Ste#124
Las Vegas, NV 89110
EMAIL: tcm@accessnv.com


(完)
我来说两句】 【发送给朋友】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 斜视角视图(四)

 ■ [欢迎对本文发表评论]
用  户:  匿名发出:
您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。

最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放 / 友情链接  
Copyright ©2001-2006 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00201