帮助文档里说了,现在真正有趣的来了,虽然我一点都没看出来哪里有趣- -! [. C9 l `- G6 m+ x$ z! u
这一章我们将了解如何使用区域(region)来布局,实现桌子在适当时候遮挡角色的效果,你可以把帖子拉到末尾先看看最终效果。
1 \/ q2 ?7 a) g/ t' z# u
2 k9 D3 D+ u8 C, C6 w在SceneEdit中打开Myscene.scene。* }; M/ |2 k1 B. f2 g0 P `8 G* a
9 W$ M: X- E% ~4 a D- {5 Z
目前我们有两个实体:backgroud和desk,还有一块区域floor划定人可以走的范围。3 z- `8 y! @/ W* ~8 p. S& V
我们需要desk这个实体在角色走到桌子后面时遮挡住角色。方法是添加另一个区域。, H4 v) M9 `7 W
7 C4 E5 S0 N* q
' p, I" e' Y$ w# s% Z5 a2 f" C$ q如图,点击Add region按钮。一个新的区域被创建了,默认名为new region,在预览窗口里是一个红色高亮显示的小方框。
, ~8 b0 n8 R- t$ @7 w0 w" r3 L/ V5 y, o+ {# c) `! ?
! |1 g- p+ F' P3 P
6 O" m3 d9 Q/ ?4 G( y6 _9 H. f- j2 h1 w: i! h" C9 E& x
; Z0 T) ~6 `$ E" h将这个区域改名为“behind_desk”。接着按步骤一中对floor所作的方法,即添加节点和改变形状使来在地板上划定一块“在桌子后面”的区域。如图。(我一开始觉得形状有点怪,但实际测试后理解了为什么划定这样一块区域); J# n3 `) c9 N' V4 {% e* [$ ~
2 I4 [/ J5 j' ]
" L+ o5 ^* |* K& o6 I
7 Z3 i' O; x6 a5 y0 E
: `# K& m: j4 Z7 ?8 y" V/ F3 W3 G- n& X" c2 T$ r* I
最后要做的就是调整node列表的顺序(使用上下箭头),如图为正确顺序:& L" _! Q$ H7 b: j
- t$ l2 A# J- W1 D Q9 A! X; Y% e8 a" b, Z/ L! A9 h
3 X: B- x" @7 U; ^! I0 i
& @# Y# M3 \8 q; v7 b" L, j
这样一来引擎在工作时按这个顺序绘制:3 h4 V( S8 P; q: e& R1 Y2 W }, ~
- ?+ N$ M: @( n' U. ]/ P
5 U+ D8 @: N. \& x1、绘制背景
& L: C, N& k+ s% [2、绘制所有处于“behind_desk”区域的角色
( R8 {" X( ~ W0 W0 V0 f2 F3、绘制desk实体(如果角色处于behind_desk区域中的话,desk就被绘制到角色之上了,也就实现了遮盖)- c1 x8 _6 G* C2 Y. f9 G5 ]
4、绘制所有处于floor区域内的角色(貌似这个引擎角色只绘制一遍,如果在behind_desk中被绘制了这里就不会再复制。是不是这个原理不太确定)
4 r% k/ ^4 U; \5 f9 h换句话说,如果角色处于behind_desk区域中,会先绘制角色再绘制桌子,反之先绘制桌子在绘制角色。
) B) \& }: S4 R1 h0 F
6 Q3 m% R: `1 Q# k4 O
5 x$ a: K+ T' L2 K
: W# [4 g1 v+ t8 @% X* \6 D保存后实际测试一下,应该会实现图中的效果。下一章将处理人物横穿桌子的问题。
- U7 K; O: K2 @' L D1 L: z1 t! h8 I- w# W8 |
# a, f4 h' R2 U" [8 r! G
) X* Z2 Y$ N0 O" x( L3 b; R0 D6 n: k% I) w
帮助文档的作者认为这是最难的地方,剩下的都很简单~请确保你理解了其中的原理。 |