帮助文档里说了,现在真正有趣的来了,虽然我一点都没看出来哪里有趣- -
3 [7 \) ~ a' V$ Q: O6 @* P9 }6 ]* [这一章我们将了解如何使用区域(region)来布局,实现桌子在适当时候遮挡角色的效果,你可以把帖子拉到末尾先看看最终效果。( c" W) A/ x g# i$ c( o0 a n; t
5 v7 |7 c6 p- e8 {1 ^5 C在SceneEdit中打开Myscene.scene。$ E3 q* L# J7 w& ^! j# q
3 _4 T* w( n) i h J. r& e$ n8 z目前我们有两个实体:backgroud和desk,还有一块区域floor划定人可以走的范围。5 j' t, c- [" E* K3 s
我们需要desk这个实体在角色走到桌子后面时遮挡住角色。方法是添加另一个区域。/ y Q% [* a' _
( c5 L* X: ^8 C1 ?9 B8 [! J
, _) s+ b- u: X* ^1 j9 d9 O如图,点击Add region按钮。一个新的区域被创建了,默认名为new region,在预览窗口里是一个红色高亮显示的小方框。8 E3 ]$ G: X. O6 c
7 ^: v) k0 t3 W1 S- b! T! ~) {$ P/ E8 @3 N! X2 q( D+ S0 j% p
- s- [6 q" R, P/ A, d/ V
/ a6 a0 P0 }) @& _+ J# [
9 F2 L2 S5 u7 m- m( e7 F5 u将这个区域改名为“behind_desk”。接着按步骤一中对floor所作的方法,即添加节点和改变形状使来在地板上划定一块“在桌子后面”的区域。如图。(我一开始觉得形状有点怪,但实际测试后理解了为什么划定这样一块区域)0 P w" m7 t* ~1 T3 N+ e
( F$ n; N) [" Z( q$ f7 i/ v v( f# m
% A6 k: I9 s# _& O" b1 y
4 T7 i# g! @2 z3 E
2 c3 I( b1 b8 U: X" `* H最后要做的就是调整node列表的顺序(使用上下箭头),如图为正确顺序:$ z: n/ p# n) _2 Z( A$ P
6 M* j- G" R0 h% e8 N# @) H; _/ z h5 ^' B* a
# Y/ ~2 x+ E* m8 `! T; m' `
4 `" L0 l, E2 H+ `9 h$ t+ b这样一来引擎在工作时按这个顺序绘制:8 }5 G# I( L" y
2 s0 x- ^/ X8 P
$ z6 L* T, O% n3 R
1、绘制背景
9 h, K! a% c4 f2、绘制所有处于“behind_desk”区域的角色
" r7 |& Z' O$ _( w/ W- T Q3、绘制desk实体(如果角色处于behind_desk区域中的话,desk就被绘制到角色之上了,也就实现了遮盖)
6 r) W5 G; l5 C A4、绘制所有处于floor区域内的角色(貌似这个引擎角色只绘制一遍,如果在behind_desk中被绘制了这里就不会再复制。是不是这个原理不太确定)( b9 w G" o$ t4 r; d q. D* D; k( C
换句话说,如果角色处于behind_desk区域中,会先绘制角色再绘制桌子,反之先绘制桌子在绘制角色。: q1 g6 K7 }: ~; [
6 Y% Y! o1 K ^6 \! }: G/ D$ W- T {
+ D; v, b2 L. z2 U. ]保存后实际测试一下,应该会实现图中的效果。下一章将处理人物横穿桌子的问题。
$ v' N, T3 S: `+ b- W; s7 k5 }1 _& F. C
# ]8 Y0 S& K9 s6 s9 o9 ]) O+ J) I8 z. y) E
- z8 L$ c- z5 f
帮助文档的作者认为这是最难的地方,剩下的都很简单~请确保你理解了其中的原理。 |