[flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

15
Isometric 位图引擎技巧 Aspirin @ Slide

Upload: shanda-innovation-institute

Post on 22-Apr-2015

1.515 views

Category:

Documents


6 download

DESCRIPTION

 

TRANSCRIPT

Page 1: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

Isometric 位图引擎技巧Aspirin @ Slide

Page 2: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

投影法则

● 统称轴测法( Axonometric )● Isometric

( 模拟城市,模拟人生 1/2 ,星际争霸 ...)● Dimetric

( 植物大战僵尸,英雄无敌 )

Page 3: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

投影的特点

● 没有消失点

● 3D 中平行的线,投影后仍然平行

● 物体离观察点的远近不影响其在画面上的大小

● 一种对 3D 世界描述的简化

Page 4: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

Isometric 的三种视角 ( 1 )

● The 30° isometric projection

Page 5: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

Isometric 的三种视角( 2 )

● The 1:2 isometric projection

Page 6: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

Isometric 的三种视角( 3 )

● The "military" projection

Page 7: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

Dimetric

● 和 Isometric 的区别

在 Isometric 中, x/y/z 轴的单位一样

即如果一个立方体被投影到 2D 画面中,所有边的长度是一样的。

Page 8: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

Dimetric

● 和 Isometric 的区别

在 Dimetric 投影中其中的一个轴(往往是 z 轴会被缩放)。

Page 9: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

Isometric 投影

public static function spaceToScreen(x : Number, y : Number, z : Number) : Point {var screenX : Number = x - z;var screenY : Number = y * Y_CORRECT + (x + z) * .5;return new Point(screenX, screenY);}

Page 10: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

3D 投影

public function calScreenPosition( n : Number3D, vanishingVertex : Number3D, centerVertex : Number3D, focus : Number ) : void {var scale : Number = focus/(focus + n.z + centerVertex.z);

var x : Number = vanishingVertex.x + (centerVertex.x + n.x)*scale;

var y : Number = vanishingVertex.y + (centerVertex.y + n.y)*scale;screenX = x;

screenY = y;}

Page 11: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

NodeTree 结构

● DisplayObject NodeAdd ChildRemove ChildSet Child DepthGet Child NumberEvent Bubbling

Page 12: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

NodeTree 的应用

● 人物身上的状态条

● 物品所处位置的地板高亮

● 增加特效

● 进入,退出房屋 / 移动平台

Page 13: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

地图网格

● 碰撞检测计算

● 寻路

● 安放物品

● 提示:创建一个 GridNode 类管理吸附在网格上的显示对象

Page 14: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

位图渲染

● 将 MovieClip 转换成位图

1) 序列

2) ScrollRect

● 使用迭代,遍历 NodeTree 上的显示对象,并把它渲染后的位图拷贝到同一张画布上

Page 15: [Flash开发者交流][2010.03.28]isometric位图引擎技巧(史珉)

一些技巧

● MovieClip2BitmapData 的异步渲染

● 对象池

● 不同大小动物的寻径

● 遮挡和排序

● 如何分割显示层