帮助文档里说了,现在真正有趣的来了,虽然我一点都没看出来哪里有趣- -
; K) o& ~$ C% i; ^8 d这一章我们将了解如何使用区域(region)来布局,实现桌子在适当时候遮挡角色的效果,你可以把帖子拉到末尾先看看最终效果。9 N5 Y0 Q+ d! r
5 p% K/ v' n* q5 ^: t
在SceneEdit中打开Myscene.scene。 Q, ~& g3 p. h. o7 `) z0 F5 e
$ |% m: R: j5 ]1 G目前我们有两个实体:backgroud和desk,还有一块区域floor划定人可以走的范围。+ n% V+ a& U5 y% H
我们需要desk这个实体在角色走到桌子后面时遮挡住角色。方法是添加另一个区域。
4 R9 x k, s( i. M* W8 C. _8 V' U
# M4 ~0 |; C1 U6 X! d' f6 N
如图,点击Add region按钮。一个新的区域被创建了,默认名为new region,在预览窗口里是一个红色高亮显示的小方框。- C4 |# V1 m- C: M0 o/ E
& U# h! i5 X9 R( a- X9 F6 e8 ]
+ J" f5 W! K5 f* ?
. n8 ?- w- q% Y$ k
: z& ^& r/ a% b
2 r$ U# b) J' _3 p: ^. M! i% k5 X
将这个区域改名为“behind_desk”。接着按步骤一中对floor所作的方法,即添加节点和改变形状使来在地板上划定一块“在桌子后面”的区域。如图。(我一开始觉得形状有点怪,但实际测试后理解了为什么划定这样一块区域)
! O2 x' N" `& X! M, [2 p
+ R9 {4 ]- J5 s0 v) X* U7 N7 r# e3 Q/ b7 C& i4 Q* L
4 N2 {8 a1 f0 X7 Q* G9 n9 S3 k, s0 U
# V9 t* v, V# W2 @: V6 n
最后要做的就是调整node列表的顺序(使用上下箭头),如图为正确顺序:) U l6 \! E( r2 ]' k
$ o. ?* q8 U" K+ C5 O' K6 e
; o; U7 L5 H! L3 }5 r
. f0 k/ d6 n5 @! k9 g
% Q, R8 b; |# c! L9 L4 H, x- _
这样一来引擎在工作时按这个顺序绘制:7 j5 V" x: x9 r: e
9 ]: M0 `# T# ~1 a9 B# M3 @& j' S
1、绘制背景
& Q; w/ d+ }+ o, e) Y2、绘制所有处于“behind_desk”区域的角色
& |- I2 p& Q3 O5 p h8 z3、绘制desk实体(如果角色处于behind_desk区域中的话,desk就被绘制到角色之上了,也就实现了遮盖): M, C; @( t' @
4、绘制所有处于floor区域内的角色(貌似这个引擎角色只绘制一遍,如果在behind_desk中被绘制了这里就不会再复制。是不是这个原理不太确定)4 a3 O4 q; E9 H- z" L
换句话说,如果角色处于behind_desk区域中,会先绘制角色再绘制桌子,反之先绘制桌子在绘制角色。
3 e8 u }. b# c% _4 @
8 o& K; u$ H" \8 E/ J3 e
& H: B& ~. f& |" [& N* e' T6 J9 q) g: U: l: ^7 e+ T5 A
保存后实际测试一下,应该会实现图中的效果。下一章将处理人物横穿桌子的问题。6 N/ S6 q: U. F# y7 s: A2 ]8 u
" m4 U, J* R7 O# }# K. `. I0 ?: j6 R* O
( F4 \1 {7 x- k$ t3 a* H: `. r* E$ e) u- {
帮助文档的作者认为这是最难的地方,剩下的都很简单~请确保你理解了其中的原理。 |