冒险解谜游戏中文网 ChinaAVG

标题: wintermute学习笔记[7]--搭建场景步骤六:自由实体、比例线、修饰区域 [打印本页]

作者: clockworkman    时间: 2010-9-17 21:17
标题: wintermute学习笔记[7]--搭建场景步骤六:自由实体、比例线、修饰区域
再发一篇,争取明天把9个步骤发完。
7 A5 q) N+ p9 S/ D3 S3 W# p, n% z 
6 C1 T' K8 U& A3 S. Z2 M这一章将完成场景的粗略设计,在SceneEdit打开MyScene.scene。
; ^5 ?- d% j4 G; P: @1 v3 R% @& d 
& t! R3 Q* G6 l+ b/ w[自由实体]
0 Z- y  f, j1 Q, r6 Z 
- j7 V  V: M2 B' k现在场景中的椅子仍然看起来像是画在地板上一样。之前我们使用创建desk实体和behind_desk区域这种方法实现了桌子的遮挡效果。这种方法是非常灵活的,对于大型物体和无规则形状的物体尤其有用。但对于小一点的东西我们可以使用更简单的方法:将它们创建为自由实体(free entities,希望有人提供更好的翻译- -)。接下来以椅子为例。
: G0 S9 d% |& f3 q# Z% \3 Z 
! c& T6 L$ ^7 ^  {. E! T什么是自由实体?之前我们所使用的常规实体:比如背景和桌子,它们在绘制时是按照场景布局(即node列表中的顺序)来绘制的。而自由实体和角色一样,绘制顺序是由它们所处的位置决定的(换句话说,由它们处于哪个区域里决定。这样看来场景中的npc就应该作为自由实体)。接下来具体讲解。( Z: A  D  z( x% N
 ( `/ Y8 L# P+ C: S, R# B
首先,在ProjectMan中为Myscene文件夹导入椅子的图片,在“data\tutorial\gfx”选择chair.bmp并导入。
4 z) B* `. h- n" v' |7 P# I. [3 o # X8 E  M7 s3 `8 x/ f' ^
# T" m3 Q; J! [  D
返回SceneEdit。在layer列表中选择Free entities项,下面node列表会显示当前所有的自由实体,现在还是空的。点击Add entity并选择Add sprite entity。一个“new entity”就创建好了。将名称改为chair,标题也可以改为chair。 
  v+ ~1 H! q' N9 `& Z  }( [7 }; U; p5 C) a1 C
+ d9 {$ W* Q! B6 ?
! q( z- T# ?' f8 d* }

) i7 Q- N( b! o9 R8 l接下来为实体指定图像。点击sprite栏后面的“...”按钮选择之前导入的chair.bmp。将实体chair移动到场景中的位置:" D& `! @" k# s# }5 I9 ^  f
1 a2 v8 @$ x5 A+ g7 G& ?# D
3 f- }, B, z: D+ T, P
5 h7 D: o  {* _% p) J' @

: w5 T7 K8 O/ l: Y- n 
% A( A* [- K0 B- z1 {保存并测试一下。你会发现角色总是在椅子之上,原因是当一个区域内存在多个对象时(例如floor区域内存在角色和椅子两个对象),引擎按它们的纵坐标(即Y轴坐标)决定绘制顺序。角色的坐标已经被设定为由她的脚所站的位置决定了,但是椅子的坐标默认由图片左上角坐标决定(这样当角色与椅子重合时角色纵坐标总在椅子之下,引擎就总是先绘制椅子,再绘制角色了)。我们要做的就是让椅子的坐标也由椅子脚决定,方法是使用一个sprite而不是简单的BMP图像作为chair实体的图象。sprite在wme可以被视为包含了更多信息的图象,其中一项附加的信息就是焦点(hot spot),焦点可以指定sprite的基准点,实体所处的坐标由基准点决定。我们要做的就是将热点设在椅子脚上。/ c7 t! {0 r3 P- s7 ^5 C* V' p8 ~

" H; S7 b( v6 }& I$ \7 M7 u首先,为chair实体创建一个sprite。返回PM,右键点击Myscene文件夹并选择“Add->Add sprite…”命令。在弹出的模版选择窗口中,选择Empty sprite模版,并将名称改为chair。 
1 A3 J% N8 Y1 ~5 u) d' ^( k, k" F* P" P/ e! x9 g$ C
, G" B9 J+ S! b
  \" W- N% b0 g& F% B; p3 e
$ D( i/ n( n' V# B

% t8 G2 }) z9 C. \9 V在MyScene文件夹中一个名为chair.sprite的新sprite创建好了。双击chair.sprite后PM会自动调用SpriteEdit工具帮助你编辑。现在这个sprite是空的,我们首先要添加一个帧(frame)来放椅子的图片(添加多个帧并设定一些信息后就是动画了)。点击Add frame(s)按钮并选择chair.bmp文件" e9 {: \8 k! y# X# F% h6 ^5 Y
2 i, b' A& ~( m5 b. K9 ^
+ Y7 _1 b) i7 G5 }
0 O% V' O% n3 \* N4 K0 K, }
: z/ a0 c- w! Q! _
 
& E& w( _. |/ g8 T接下来需要改变焦点的位置。有两种方法:一是在右边的预览窗口里拖拽图片使焦点(就是那个红色十字)移动到椅子脚的位置,二是在左下角的信息栏中找到hot spot一栏填写坐标135,174。  E1 U  [( B9 ?5 J8 A+ n1 u% i
+ z$ V/ B  J7 {" S8 N
2 V- x( \' j. s5 W5 y1 E9 S
2 Z& R8 T3 K) K$ t
# }3 S3 Y7 o: |0 s
: a8 I, q, d) W6 i0 T- n' ~
 
2 X) q2 a7 g( Y3 Y1 l保存并返回SceneEdit。选择chair并更改chair的图象为新创建的chair.sprite文件。你会发现椅子的图象移动了,这是因为我们改变了图像的基准点,移动图像到正确位置。保存并测试游戏。* l. y* a1 ]; r6 _8 D; k; n! x

! d3 t( h" u  L4 z' ^% O0 Q效果应该如图所示。$ r# {8 w$ J: H/ v( `( h4 {2 {! a

0 }% \( p3 \, X
) K7 @, S7 h6 q' K& h: l& Y$ {- |; q* t2 l3 Y4 E* f/ @
1 V  b0 u' u0 m
 
, Y! j" A) A' D最后要做的就在椅子下增添一块障碍区域防止角色横穿,还有设几个路径点。
8 R, Z* \0 }' n# X. M, e 1 |% m' D4 F6 t3 q- z  g+ F
方法见步骤4和5,最后效果如下图:
0 e7 h1 e# ?: E1 W1 `
1 \% N  [& E8 W  k; l! ]" G& I" C
7 x- W) F: X7 ~( b& [5 h; u. e% L* D. R' L; t0 e# W# n7 \9 t& w
; x7 D. i' f5 Y7 |" X- d: U/ h* a
+ p1 N! [/ P+ n% t0 A. X6 O$ m( @# k+ S
' X2 _5 F2 b, z
关于自由实体的部分结束了。6 J$ ?$ q; p# L. Q
. a8 c0 b/ o6 H, [( V1 H2 W' @* I
 
. ]& f( ^( e6 ~9 r[比例线]
1 H( b% J$ `. C3 { 
% j& I0 N; D" e4 o9 z: Z7 E现在场景看起来貌似差不多了,但角色好像有点太小了,我们通过可以比例线(scale levels)改变角色的缩放效果。比例线在Scene中表示为一条绿线,在最左端标注了比例,例如现在场景里有两条比例线,中间一条70%,底下一条100%,这样角色从底部到中间行走过程中,比例逐渐由100%缩小至70%(在70%线之上时会默认恢复为100%大小),这样就实现了近大远小和不同场景人物比例不同。
& @' D$ c7 G8 d  Y* c! h" l
' l- W* Y# u5 l- p/ Q8 v比例线最左端还有一个很扁的小方框,按住小方框并拖动就可以改变比例线的位置,右键点击小方框可以修改属性(properties,可以改变缩放比例和指定位置),或删除(remove)比例线。, ^* L1 x0 S% A1 e0 A* n9 _0 x( b0 `
+ [$ v+ T9 k+ h( g, c# U# b

3 t1 J- H( e6 ?( d5 Y9 o9 w: V
9 z8 K4 \: U) b* j2 ~. c" z% o
" W* O' o6 g. x
+ S5 o% {1 V1 U$ A1 e- {* x* F点击下图中的按钮可以添加比例线。(帮助文档使用的是老版本,新版本中者按钮旁边还有个按钮,可以添加纵向的比例线)
4 j- f" d6 f6 p3 Q7 i! }2 N) r+ l

" O! B% _1 A5 }8 s, K1 a
/ b' Q" M7 }3 z8 C  y  H  R! A  f 
# B. v% P7 A2 l% b' `' R之后把上方的比例线移至地板上端并将比例改为90%,下方的比例线则移至地板最下端并改为160%。
$ M& l; K4 u1 v) w/ W; I% T 
& ^' r, G; x0 A
+ i. @- v0 n. ^# h3 K 0 S% s1 A( s; _( N8 U$ l0 s
你可能想知道如何设置到正确的比例,最好的方法是使用角色模型(actor placement tool),SceneEdit提供角色模型方便你编辑而不必频繁测试,如下图点击Place actor按钮。' Y8 J# H5 \5 X) _: e5 j% Z$ Y

7 G0 p- `7 Z- m+ r
  c" r. R# `: b6 Z9 L! f
6 \8 D6 }7 X4 ~: j9 z* I5 f/ H/ i% \! W
 
; j) K1 ?. B) l( u这时会弹出一个窗口让你选择使用哪个角色。在“data\actors\molly” 文件夹中找到molly.actor并载入。这时候你的鼠标就变成了一个角色模型,你可以移动鼠标到任何位置看看效果,这时点击右键角色会改变方向,点击左键会暂时将角色模型放下,以后再需要用时点击Place actor按钮就可以。" {0 ?6 n: L  ]5 X# E' }
   p0 f# y# O% o0 W
 [修饰区域]
0 u+ w& A, M# w) } 9 P! w' L9 |  X
接下来我们可以添加一些小效果,比如当角色站在远处的小角落时让角色变暗一点。
1 S+ a7 u" E% m1 d+ S 9 e: }! `0 g6 s
我们可以添加一些特殊的区域来影响角色的颜色和缩放,这些区域被称为修饰区域(decoration regions)。
. Z$ i- k+ w, {( u/ y+ @
# H/ a% n' l5 a% N1 D' i/ l( A在layer列表中选择main,并点击下图的按钮添加一个区域。/ l6 ?2 F/ M8 {) E
  N7 i8 O5 ]  x( i  f3 i+ x0 w& `; `  h

  X: H- o- a1 s
- w* x. M6 n( n. T
5 I- n) Y1 Z- c. o! T8 k" n% C! \
+ Q4 S. h4 t4 ^) B1 |+ c8 U/ \将名称改为"shade",并将类型由layout改为Decoration。注意信息栏中的Clolor项,选择一种颜色后,在这个区域内的角色绘制时就会混合这种颜色。为了达到阴影的效果,我们指定为浅灰色。
5 g* Q3 C: |5 c8 y
, v0 h8 ]! y3 P1 W* B# H' q6 u/ ~$ A# o

* c* R5 h1 @7 `9 R% d# Y$ v3 U1 N 
$ V% \1 r0 K- B& u+ m改变scale项的话角色在区域内的话就会使用这个比例而不是比例线的,选0则不影响。# }: i1 ^; \& R  m
 - h/ P  Y+ u$ Y$ |) H+ }! {
注意,设定颜色后必须满足以下两个条件才能实现:9 X: d8 h7 v, i
1、游戏必须运行在加速模式中,兼容模式下无效
5 i$ [$ f( F4 Y5 y' ^9 t3 K0 Y2、对象必须将Colorable属性设为真
# i; x$ [7 u, q 3 S1 L% _  Z6 @0 v
最后将区域移动到合适的位置并调整形状:
$ K& k: B' H+ \/ S/ D* b; p9 u9 \' u0 g# f! @

& o! D2 L9 Y0 ^, E 7 \: F3 R6 \0 O; z" I
" W, z9 {) q( [$ H: [6 p- B; e* ^  u
注意:修饰区域影响角色角色的绘制,所以必须将修饰区域设在node列表的末尾。
; U/ L. m: M( `, e 9 T7 g* E& T: l- R" T' t
你可以回PM测试一下或使用角色模型看看效果。
# B# e/ h6 f0 P7 w8 m' i9 q. {
: I# ^, i: I2 t/ L+ h6 C这一章结束了~
作者: naptid    时间: 2010-9-17 22:58
感觉比前几篇复杂些……末尾有处“注意”看了不是很清楚……1 j6 r+ ~0 {: E6 q4 F! L
/ L' b6 V- ]3 [( j& b$ s( f! e% o
注意,设定颜色后必须满足以下两个条件才能实现:' l; \; z# \& z; w$ i5 W& o, {
1、游戏必须运行在正常模式中,兼容模式下无效——正常和兼容模式指的是?
) o" D3 o  O( J" M1 Y# n9 \8 K& a2、对象必须将Colorable属性设为真——此属性设定的位置?
作者: clockworkman    时间: 2010-9-18 09:55
标题: 回 1楼(naptid) 的帖子
话说刚才有段时间一直上不了论坛- -' f0 z& Z+ }' p, I3 s" S
/ q. M; h8 h* l7 E& d4 P- q4 ^
这里忘了说明:1 O5 X4 z& T' N. r2 V( |
1、修改了,应为加速模式(accelerated mode),默认是打开的,我也不清楚具体的含义- -
2 n% A6 u0 X' ]) `3 D# K2、会受修饰区域影响的有角色和自由实体,自由实体的话,在左下角的信息栏仔细找找,就有这个选项。至于角色,我暂时没找到设置的地方,默认开启。




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2