帮助文档里说了,现在真正有趣的来了,虽然我一点都没看出来哪里有趣- -4 S3 O( d M) H/ e/ P6 `' y
这一章我们将了解如何使用区域(region)来布局,实现桌子在适当时候遮挡角色的效果,你可以把帖子拉到末尾先看看最终效果。
7 Y- a- m! @/ V3 p8 ?9 x% }& I3 b' S6 W7 m) E' ?
在SceneEdit中打开Myscene.scene。# _1 R! @' |' ?- ^, o. y. Q
b* n- m* M$ {' [4 T目前我们有两个实体:backgroud和desk,还有一块区域floor划定人可以走的范围。
: X+ B0 @9 Q+ W! k# s% h9 _9 x7 I9 t我们需要desk这个实体在角色走到桌子后面时遮挡住角色。方法是添加另一个区域。1 n' p3 j5 b. @" ^
0 }3 @4 ~6 M3 r, c7 V# y' {& G0 o
d" a, _9 h/ ^8 q2 q' d! Y
如图,点击Add region按钮。一个新的区域被创建了,默认名为new region,在预览窗口里是一个红色高亮显示的小方框。) `+ @3 f9 W \, }. u+ J
# _! j/ G# Z8 O# J9 I0 Z
! [- E. H, \9 U5 d
& ^" A4 g, C/ ^+ a* S
: z' _( a7 J7 s
3 h* M2 X& M! C, H1 R4 z. @* q. z$ t
将这个区域改名为“behind_desk”。接着按步骤一中对floor所作的方法,即添加节点和改变形状使来在地板上划定一块“在桌子后面”的区域。如图。(我一开始觉得形状有点怪,但实际测试后理解了为什么划定这样一块区域)
( d* n N/ X# g3 D0 h/ a* M2 z; T6 i ~
Y$ S' A$ [! Q2 a7 V
) Q; a: d" ~$ M# [2 w) |3 T
/ R% u: `/ K* ]' g- n0 c' P& c! U1 k
最后要做的就是调整node列表的顺序(使用上下箭头),如图为正确顺序:: t4 S$ n5 v. k6 d
& v, M2 g0 L" T# G5 A4 q7 o# F
+ ~# s4 w8 L! L; K
( b6 {4 s2 d" `) h* u" {
+ Z+ p2 a) X& I- K这样一来引擎在工作时按这个顺序绘制:/ H+ s$ R: Z# b
6 i }; e$ ^7 j- C
2 T1 g4 t( H. k0 M$ A* W1 w3 K2 t- C9 h1、绘制背景
# u& R# T( L/ r2 H! u2、绘制所有处于“behind_desk”区域的角色) A; N+ K8 a* w! l( f6 `
3、绘制desk实体(如果角色处于behind_desk区域中的话,desk就被绘制到角色之上了,也就实现了遮盖)
9 d$ E8 G. d' C. a% w, [4、绘制所有处于floor区域内的角色(貌似这个引擎角色只绘制一遍,如果在behind_desk中被绘制了这里就不会再复制。是不是这个原理不太确定)
; p9 T9 @- h0 B0 W5 E换句话说,如果角色处于behind_desk区域中,会先绘制角色再绘制桌子,反之先绘制桌子在绘制角色。. @4 @* u. q7 D6 P
+ g$ N! V( d" m2 u- H- U
1 D, W2 x. @) n- l
1 B- m% ^7 g7 H0 V& }保存后实际测试一下,应该会实现图中的效果。下一章将处理人物横穿桌子的问题。) X: Z5 v, M" M* L* ^% q% k0 y
- y: y8 T8 ]4 L, f
$ j5 r% G2 l* i0 h1 }( _/ |, S, I5 L9 ]
2 s7 F3 i% S9 t, W
帮助文档的作者认为这是最难的地方,剩下的都很简单~请确保你理解了其中的原理。 |