帮助文档里说了,现在真正有趣的来了,虽然我一点都没看出来哪里有趣- -, d4 s, r9 ~ W7 o/ v
这一章我们将了解如何使用区域(region)来布局,实现桌子在适当时候遮挡角色的效果,你可以把帖子拉到末尾先看看最终效果。* Z+ ~/ O; U- E; x0 O: I! G1 V2 t
/ i1 A7 M4 m l4 k6 {+ y在SceneEdit中打开Myscene.scene。# \% G3 b" s: N* r, r# ~
' P5 H( C( ]3 w* E b4 u$ x' `目前我们有两个实体:backgroud和desk,还有一块区域floor划定人可以走的范围。
% W! N' X+ F3 Q2 j# {我们需要desk这个实体在角色走到桌子后面时遮挡住角色。方法是添加另一个区域。
- L# C3 Z7 P8 O% X- y
1 K) I, j$ _4 W. b, Z0 W
! b* ^. b/ \. m' ~如图,点击Add region按钮。一个新的区域被创建了,默认名为new region,在预览窗口里是一个红色高亮显示的小方框。
6 [, ?. S3 x v- C# [. Y" n9 V4 m$ ~" X6 q" N, H: S5 j K
. K2 W0 N* x. N% Q' ^0 F, E% S+ @% ?
$ m. ]0 S; n) p7 m
( K/ d+ H1 V& p( H将这个区域改名为“behind_desk”。接着按步骤一中对floor所作的方法,即添加节点和改变形状使来在地板上划定一块“在桌子后面”的区域。如图。(我一开始觉得形状有点怪,但实际测试后理解了为什么划定这样一块区域)* Y9 {1 p5 b& Z, H# ]* C2 y: A3 z
3 m% |9 j5 D( j& {, D4 U$ I7 k& f
: x" b! |4 z0 o1 I0 S1 h* |8 t+ J
3 Y% j6 ~5 e/ I+ G4 ?, Y. W; k) i
* _0 r' f' v. V" h/ V/ f( h V2 K0 t: F5 m& P, v
最后要做的就是调整node列表的顺序(使用上下箭头),如图为正确顺序:! J( g6 m! t4 I) u! i7 ?' n' s" X) d
1 i; r& G u- d- n" t3 z% q8 o6 a- m# X X" C
& D+ j$ v J) k$ @" ~7 y n
+ j0 V3 }4 P$ a; z这样一来引擎在工作时按这个顺序绘制:
" [- s9 @, K: M7 Z
m: C/ P5 e: a
+ g$ Q' d/ I: N; c" J" m L3 u5 B- L1、绘制背景
8 X" U' ]4 e7 p4 m' Z3 t2、绘制所有处于“behind_desk”区域的角色/ m* ~4 U" @/ o
3、绘制desk实体(如果角色处于behind_desk区域中的话,desk就被绘制到角色之上了,也就实现了遮盖)
+ c& ~9 j& E0 v" x3 \4、绘制所有处于floor区域内的角色(貌似这个引擎角色只绘制一遍,如果在behind_desk中被绘制了这里就不会再复制。是不是这个原理不太确定)( d/ P4 w% i3 X7 A0 y" g: @
换句话说,如果角色处于behind_desk区域中,会先绘制角色再绘制桌子,反之先绘制桌子在绘制角色。' q1 { I! [! t7 Y
' r2 P( r* l+ ~" n5 c) S' t+ s) { B" s
$ b- r: n/ B' b
保存后实际测试一下,应该会实现图中的效果。下一章将处理人物横穿桌子的问题。% r9 D. y4 v/ }4 g" ?4 S
5 c( g6 D: j: x
# W; j# ^0 j5 f4 S- B' S. ?
% B* a V9 @2 G3 I. e0 P: {. u3 U5 s s( W
帮助文档的作者认为这是最难的地方,剩下的都很简单~请确保你理解了其中的原理。 |