帮助文档里说了,现在真正有趣的来了,虽然我一点都没看出来哪里有趣- -
; g3 O' w7 O G这一章我们将了解如何使用区域(region)来布局,实现桌子在适当时候遮挡角色的效果,你可以把帖子拉到末尾先看看最终效果。 I0 X+ L5 y( `/ y7 ]
4 y/ H7 z5 E$ f ~" C8 |
在SceneEdit中打开Myscene.scene。$ ?6 J, C6 _, t. o* C3 l
! F& P( _! U; T% a' B: O目前我们有两个实体:backgroud和desk,还有一块区域floor划定人可以走的范围。6 ~$ i* ?- j8 u5 P M' H" _
我们需要desk这个实体在角色走到桌子后面时遮挡住角色。方法是添加另一个区域。5 ?' ? h# ?/ c# s2 z. c
" n% c( |5 e/ x |0 r' i6 I& n& @8 N8 W0 h, p9 A
如图,点击Add region按钮。一个新的区域被创建了,默认名为new region,在预览窗口里是一个红色高亮显示的小方框。! h9 C. {- L8 _" q: a. t( ~
6 O: E3 t, T( h7 [5 f) p1 R6 \! n+ \/ k1 }3 [; U6 e' K% w
![]()
. v k" e; N; V/ \0 d) n! r# C, Z9 ~: ~3 I: `
! z% m- N7 O* X
将这个区域改名为“behind_desk”。接着按步骤一中对floor所作的方法,即添加节点和改变形状使来在地板上划定一块“在桌子后面”的区域。如图。(我一开始觉得形状有点怪,但实际测试后理解了为什么划定这样一块区域)) O4 H7 c: a0 i+ s* m2 [
' @# A8 }, N% ~8 r: g; E: `4 k
* i7 k3 Z# e7 Y% R . e+ f" A8 W/ k$ S/ O
. Q+ E* R8 h9 ]: g! |# e4 c/ e' j+ a" d
最后要做的就是调整node列表的顺序(使用上下箭头),如图为正确顺序:
5 e6 X. d8 } q7 `) c/ _ @
8 V+ ]& v% V/ Z0 Q0 u7 H![]()
5 A* Z, z; V* u; c1 t
$ _% I0 R# m a" e8 m% Q3 M3 J0 V8 Z4 x+ Y. }
这样一来引擎在工作时按这个顺序绘制:
0 {1 G: [+ {# z
/ m8 x5 y: n$ o O* p. S8 j& X) M: g' [6 P$ _' T0 q7 B8 o
1、绘制背景
$ w- M' R* v. V: m2、绘制所有处于“behind_desk”区域的角色
{. j& L) s' _0 c3 i4 }" f3、绘制desk实体(如果角色处于behind_desk区域中的话,desk就被绘制到角色之上了,也就实现了遮盖)5 _7 r# N; {; [3 F% a6 ]
4、绘制所有处于floor区域内的角色(貌似这个引擎角色只绘制一遍,如果在behind_desk中被绘制了这里就不会再复制。是不是这个原理不太确定)
$ A- e! h' M; e9 q' U3 L2 _/ K换句话说,如果角色处于behind_desk区域中,会先绘制角色再绘制桌子,反之先绘制桌子在绘制角色。
5 c% U8 W. W4 e! v+ r$ N) {( I$ |) E* l% B
" ~0 O9 v- J) ^$ p' v
* p) T: \% p9 F, j' a4 [/ l
保存后实际测试一下,应该会实现图中的效果。下一章将处理人物横穿桌子的问题。: g3 y. p4 p3 @! M3 f
- o8 q0 K& }, V
![]() ![]()
( z/ w. n4 l3 d, X5 V* U+ x
" U2 u1 T/ Z5 P4 S
* e, T& T3 i- w; u2 W帮助文档的作者认为这是最难的地方,剩下的都很简单~请确保你理解了其中的原理。 |