网页功能: 加入收藏 设为首页 网站搜索  
斜视角视图(一)
发表日期:2007-01-17作者:[转贴] 出处:  

斜视角视图(Isometric Views)(中文版)

吉姆·亚当斯

残雪 译

----------------------------------------------------------------------------

如果你对平铺(tiled)图形还一无所知,那么在这儿它就放在一个“坚果壳”(nutshell)里。一组象素,通常是矩形的形状,构成一个平铺图形块,如同地板上的一块瓷砖。当你把这些图形块放在一起的时候,他们就形成了一个图案。你还可以把砖块图案的图形块堆放起来以构建更大的平铺图案。
所以说,你不需要存储原始的位图,而是用一个地图数组来存储图形块的号码,从而可以绘制出更大的图片。一个典型的绘图函数从屏幕的左上角开始,向右移动直至右边界,然后再向下移动一行,重新开始。
下面看一下斜视角视图型。与矩形图形块不同的是,它们是斜视角的。你绘制它们的时候,并非是x轴从左向右,y轴从上向下,现在的x走向右下方,而y则走向左下方。而地图则依旧是从左向右的为x轴,从上向下的为y轴。
我们看下图:(x 和 y 为地图坐标)

直角视图: 斜视角视图:
- X - 0 0
0123456789 / 1 * 1 \
0 ********** Y 2 * * 2 X
| 1 * ** * / 3 * * 3 \
Y 2 * **** * 4 * * 4
| 3 * ** * 5 * * 5
4 * * * * 6
5 ********** * * * * 7
* * * * * 8
* * * * 9
* *
* *
* *
* *
* *
*

现在别忘了我们的显示(视频屏幕)还是直角的,所以一个典型的场景如下所示:

------------------------
| \ 草 / |
| \ / |
| \ / | (斜杠表示图形块的角度)
| \/ 水 |
| 沙 \ |
| \ |
------------------------


我们通过使用斜视角的图形块来获取视图。这些图形块有宽度、高度和深度。既然观察视角依赖于图形块的宽度和高度(这给了我们深度),我们需要用一定的角度把他们绘制出来。深度在绘制中没被包含在里面,因为我们只要考虑宽度和高度就够了。
一个不错的观察角度是2:1的比例。这意味着水平方向每画两个象素,在垂直方向就有一个。我们实际上使用的是2.1:1,我们的图形块的宽度为32,所以我们很快就得到了我们的高度是32/2.1=15.23。所以我们最后的图形块的尺寸为32x15。这是高度为1的“基本”图形块的大小。记住,我们的图形块可以有不同的高度。所以一个墙可以是32x90。高度并不改变什么,但宽度必须保持为32。

让我们看一下图形块的形状(按象素):

1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
----------------------------------------------------------------
1| O O O O
2| O O O O O O O O
3| O O O O O O O O O O O O
4| O O O O O O O O O O O O O O O O
5| O O O O O O O O O O O O O O O O O O O O
6| O O O O O O O O O O O O O O O O O O O O O O O O
7| O O O O O O O O O O O O O O O O O O O O O O O O O O O O
8| O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O
9| O O O O O O O O O O O O O O O O O O O O O O O O O O O O
10| O O O O O O O O O O O O O O O O O O O O O O O O
11| O O O O O O O O O O O O O O O O O O O O
12| O O O O O O O O O O O O O O O O
13| O O O O O O O O O O O O
14| O O O O O O O O
15| O O O O

(未完)
我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 斜视角视图(一)
本类热点文章
  脚本系统的实现
  C++基本功和 Design Pattern系列(2) Ty..
  C++基本功和 Design Pattern系列(1) - ..
  斜45度游戏开发(提高篇)
  睱酵笴栏祘Α砞璸?? - [秈顶絞]
  斜45度游戏开发(二)
  第一次写技术文献。Collision AI
  斜视角游戏中遮挡的判断
  C语言基本功教程系列(5) - 文件, Socke..
  用rand()和srand()产生伪随机数的方法总..
  C++基本功和 Design Pattern系列(3) co..
  C语言基本功教程系列(1)
最新分类信息我要发布 
最新招聘信息

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