热血传奇Tile地图绘制方法分析及平滑绘制分析

news/2024/11/14 12:34:25/

http://blog.csdn.net/lyin_c/article/details/25742765


众所周知热血传奇的地图绘制是不平滑的。因为其绘制间隔是以游戏中的X,Y坐标为单位进行绘制间隔。而一个X坐标.和Y坐标 在游戏内表示 48,32 个像素点。

   而游戏中的房屋等元素在我看来更是坑爹。因为房屋这些元素的绘制并不是以左上角为基点进行绘制 而是以左下角。也就意味着 如果一长房屋的图片长度如果和屏幕差不多大。    则在获取房屋图片的索引时 需要循环两个屏幕的高度。而且这经常出现。比如盟重的石墓。 如果不循环两倍的屏幕高度。通常是15*32个

  for nY := -2 to ScreenHeigh div UNITY + 16 do

   则房屋会出现不完全的问题。

   我想改进这种绘制方法实现平滑绘制。

   想法是:先建立一个略大于屏幕宽度和高度的渲染目标。至少左右上下大于两个坐标单位。然后循环将Tile图片画在此渲染目标上。再将其需要显示的区域画在默认目标上。

   这里需要注意的是传奇的地砖分为大地砖(96*64个像素) 和小地砖(48*32个像素) 分别存放在Tiles 和Smtiles 文件内。而传奇的单位坐标为 48*32个像素。也就是说大地砖其实是  包括了4个坐标单位的图像。如果渲染的目标坐标X,Y并不是2的倍数的话。那么大地砖就会被取消绘制。所以当碰到X Y为非2的倍数时候 画大地砖之前一定要将X,Y便宜减小到最邻近的2的倍数的XY坐标 然后将其坐标绘制出来。

 或者将画地图的单位大小作为2的倍数进行。


  对于MapObject来说 就是指房屋以及灯光这些效果的绘制。房屋的绘制在 TPlayScene.PlayScene 函数里面。下面主要总结一下要点。

  首先对于绘制区域会执行两次循环。为什么是两次 而不是一次?

第一次对于取出来每个坐标的纹理会进行判断 如果其宽高等于 48*32 那么才会进行普通绘制

       第二次对于取出来每个坐标的纹理会进行判断 。如果其坐标需要混合绘制。则不管纹理的大小进行混合绘制。如果纹理不需要混合绘制 那么纹理宽或高必须不等于48或32

       决定纹理是否需要混合由如下决定

   

[delphi]  view plain copy
print ?
  1. ani := Map.m_MArr[I, j].btAniFrame;  
  2.   if (ani and $80) > 0 then begin  
  3.     blend := True; //最高位为1则需要混合绘制  
  4.     ani := ani and $7F;  
  5.   end;  



http://www.ppmy.cn/news/542772.html

相关文章

关于热血传奇actor绘制的分析与思考

代码内将每个actor的动作细分为 站立 行走 攻击 死亡 等等。 而每个动作都包含8个方向的定义。指定如何从资源文件中 获取相应的纹理。 以下是方向的常量 // Actor 方向常量DIR_UP 0;DIR_UPRIGHT 1;DIR_RIGHT 2;DIR_DOWNRIGHT 3;DIR_DOWN 4;DIR_DOWNL…

【热血传奇】 脚本开发之变量详解

标识 [001]-[499](各引擎不同标识的上限值不能。正常的是499个),这不是变量,这是标识 标识的初始值是关闭的,它不会因为人物下线或服务器重启而重置 标识和变量不同的是只有0和1,标识是私有的,不共享。 一般适用于游戏…

怎样制作传奇私服服务器,新手传奇gm必须学会如何制作传奇私服小地图

对于任何一个传奇私服服务器来说小地图都是非常重要的一个功能,当然如果我们是找传奇一条龙来做服务器他们都会给我们做好,但是大多数时候我们需要自己进行相关设置。对于这样的情况小地图的相关制作就变成了一件相对比较困难的事情,因为大多数时候我们的服务器都会增加一些…

做挂第一步:如何找基址(以热血传奇为例)

如何找热血传奇基址? 一.首先打开游戏并使用CE加载游戏进度。 二.在数值中输入血量值207,点击新的扫描,扫描类型选择精确数值,如图所示: 为什么要输入207呢?这是指游戏中人物的当前血量&#…

热血传奇资源文件wzl、wzx解析

盛大传奇客户端的图片资源都保存在data目录下的wzl文件中,wzl文件结构比较简单,由一个文件头结构和若干图片数据组成。 找了个最小的wzl文件作为例子 蓝色高亮部分就是文件头,其中只有ImageCount有意义,其他的字段不清楚是做什么…

【Cocos2d-x】模仿热血传奇开门动画

一、准备素材 传奇登录场景背景资源在ChrSel.wzl文件中,背景图索引是22号,开门动画是24~32号(共9张)。 至于图片提取,可以参考之前写过的一篇关于热血传奇资源文件的文章https://blog.csdn.net/aqtata/article/detai…

K8S存储值之PV和PVC

1. 概念: 1.1. PersistentVolume (PV): 是由管理员设置的存储,它是群集的一部分。就像节点是集群中的资源一样,PV也是集群中的资源。PV是Volume之类的卷插件,但具有独立于使用PV的Pod的生命周期。此API对象包含存储实…

MySQL解除30天试用限制

打开系统注册表编辑器 WinR,输入regedit.exe,回车运行。 修改注册表 进入\HEYK_CURRENT_USER\Software\,找到以{}括起来的那项,右键选择权限,直接将里面所有的用户的所有权限全部diable,或直接删除以{}括起…