设为首页收藏本站官方微博

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

[复制链接]
查看: 3383|回复: 2
打印 上一主题 下一主题

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

跳转到指定楼层
楼主
发表于 2010-9-17 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

再发一篇,争取明天把9个步骤发完。
7 V5 q- ^+ J5 z  e/ N8 J; S/ P0 ` & Q' y6 f+ l1 J
这一章将完成场景的粗略设计,在SceneEdit打开MyScene.scene。
, _: O/ @) n. k; f& o, L8 @7 C 
1 y- q. E& V8 _, Y; Q4 y) x& ^[自由实体]
3 J* z- r8 I: m2 P" N2 n 0 Z# N: |0 d4 p& u
现在场景中的椅子仍然看起来像是画在地板上一样。之前我们使用创建desk实体和behind_desk区域这种方法实现了桌子的遮挡效果。这种方法是非常灵活的,对于大型物体和无规则形状的物体尤其有用。但对于小一点的东西我们可以使用更简单的方法:将它们创建为自由实体(free entities,希望有人提供更好的翻译- -)。接下来以椅子为例。8 T- P  G5 n3 `- X; I* I3 r
 
- ^9 }: a5 ?5 K. \- Z) A6 p) x什么是自由实体?之前我们所使用的常规实体:比如背景和桌子,它们在绘制时是按照场景布局(即node列表中的顺序)来绘制的。而自由实体和角色一样,绘制顺序是由它们所处的位置决定的(换句话说,由它们处于哪个区域里决定。这样看来场景中的npc就应该作为自由实体)。接下来具体讲解。
5 B' y3 h: j2 g( H: Y9 ] 6 u- g5 f! b& [( z2 j( c
首先,在ProjectMan中为Myscene文件夹导入椅子的图片,在“data\tutorial\gfx”选择chair.bmp并导入。
2 k- O4 l$ q, G8 u: z" j & C9 R: W( K- u% s1 w. J" |

: G- v  v3 w( r8 l- }" m返回SceneEdit。在layer列表中选择Free entities项,下面node列表会显示当前所有的自由实体,现在还是空的。点击Add entity并选择Add sprite entity。一个“new entity”就创建好了。将名称改为chair,标题也可以改为chair。 
( N' h. E) S9 S( A$ D- j+ g2 V7 P& p! L( d- U7 c8 b

' q1 D- z, v6 s( M- X$ {6 d/ K5 D$ o0 {, ^- _

- ^' E1 P  z3 ]# @接下来为实体指定图像。点击sprite栏后面的“...”按钮选择之前导入的chair.bmp。将实体chair移动到场景中的位置:+ O& H/ t: G1 q: t

' L' Z. z8 D/ ]" w6 T  K- |8 G# U& P0 B, \- @5 r

2 \; O$ w0 l" M' p- r( f) Z, s3 }6 Z9 g+ G  J( Q- @7 e  x7 g2 Z
 
( x5 d8 D1 D$ \2 T保存并测试一下。你会发现角色总是在椅子之上,原因是当一个区域内存在多个对象时(例如floor区域内存在角色和椅子两个对象),引擎按它们的纵坐标(即Y轴坐标)决定绘制顺序。角色的坐标已经被设定为由她的脚所站的位置决定了,但是椅子的坐标默认由图片左上角坐标决定(这样当角色与椅子重合时角色纵坐标总在椅子之下,引擎就总是先绘制椅子,再绘制角色了)。我们要做的就是让椅子的坐标也由椅子脚决定,方法是使用一个sprite而不是简单的BMP图像作为chair实体的图象。sprite在wme可以被视为包含了更多信息的图象,其中一项附加的信息就是焦点(hot spot),焦点可以指定sprite的基准点,实体所处的坐标由基准点决定。我们要做的就是将热点设在椅子脚上。
! m6 F$ `; x" C- Y
% I) X2 a; @, i( t+ e! E首先,为chair实体创建一个sprite。返回PM,右键点击Myscene文件夹并选择“Add->Add sprite…”命令。在弹出的模版选择窗口中,选择Empty sprite模版,并将名称改为chair。 " ^- L1 R/ _, \; D- J

- d  Y4 m- u) R$ O' U1 L( i/ x( b1 V( h5 O
+ |4 Q0 N2 ?; E+ Q2 x6 I/ b

8 Q: q7 C5 l! `9 ?' j$ w7 i
: D( {' Z+ A6 ^& x/ \" C, f# |在MyScene文件夹中一个名为chair.sprite的新sprite创建好了。双击chair.sprite后PM会自动调用SpriteEdit工具帮助你编辑。现在这个sprite是空的,我们首先要添加一个帧(frame)来放椅子的图片(添加多个帧并设定一些信息后就是动画了)。点击Add frame(s)按钮并选择chair.bmp文件5 M, `2 d6 T. B- l
, X$ A" \) M" N; V0 }5 c
" G2 z% s' R& C$ [
, b$ A7 `7 P# @0 l! P; c- r; Z
5 a2 X% `* p6 {- G% S
 
: j% n* K. @! E$ T# b接下来需要改变焦点的位置。有两种方法:一是在右边的预览窗口里拖拽图片使焦点(就是那个红色十字)移动到椅子脚的位置,二是在左下角的信息栏中找到hot spot一栏填写坐标135,174。- x( p7 G- P/ J3 c+ X: g

% c! {, a; ?$ k% n: X( e* I2 |) P# P' b, F& J4 t
/ i% n7 Z* _5 b' v3 f# {  T8 C

* f& ?% ~: h5 x2 I. p, N$ d/ a0 E6 K0 a8 ~/ Q6 a
 
1 ?! e5 ]2 L. Q/ E保存并返回SceneEdit。选择chair并更改chair的图象为新创建的chair.sprite文件。你会发现椅子的图象移动了,这是因为我们改变了图像的基准点,移动图像到正确位置。保存并测试游戏。3 p# R+ D1 |5 b" q
  _" X' ^" T4 z
效果应该如图所示。1 F. X. [) t; h5 B
9 V- g2 X3 P% I7 }+ M1 l

, P, D& C. W1 A* |: j7 s; z; b. U2 u7 o- Z; W

( i. ^6 O% t* _5 b 
- r% a: i4 [; P- |  r( ~最后要做的就在椅子下增添一块障碍区域防止角色横穿,还有设几个路径点。
) \) ^* I' q, [- l- U+ X; C  k
7 C6 q7 j7 y& Y3 ]2 z2 m方法见步骤4和5,最后效果如下图:% i! X0 F4 ]4 ?4 }, E
# m2 W8 G$ }7 y
; [' F5 d1 Y" f" u% _+ D

2 ?# q! u7 o' Y4 `: y) X/ |8 s& P$ l7 \9 X! u

9 o8 I/ i% x/ v
* \, y9 Y4 Z2 r& [关于自由实体的部分结束了。
4 `+ h! X* ]2 i: y4 Y# _1 L' e, R% @) i' j( F1 y
 ) h/ z  C; f, Y2 ^
[比例线]2 R% v) q  ~$ n  k! v& v3 G' K
 
# L* N$ J' b: @  c& y* s, m现在场景看起来貌似差不多了,但角色好像有点太小了,我们通过可以比例线(scale levels)改变角色的缩放效果。比例线在Scene中表示为一条绿线,在最左端标注了比例,例如现在场景里有两条比例线,中间一条70%,底下一条100%,这样角色从底部到中间行走过程中,比例逐渐由100%缩小至70%(在70%线之上时会默认恢复为100%大小),这样就实现了近大远小和不同场景人物比例不同。2 A1 y& q& }: S6 U5 a% j

. m& p) w2 Y0 F6 P* C比例线最左端还有一个很扁的小方框,按住小方框并拖动就可以改变比例线的位置,右键点击小方框可以修改属性(properties,可以改变缩放比例和指定位置),或删除(remove)比例线。
2 C+ S0 v/ N$ g. A4 z) }  }6 C8 l# h) c2 g' x! U1 j

* R8 B% ]3 U" M6 E6 _  C. g- A/ f7 H4 ]# m- v6 W6 z5 v
1 l9 G: k7 E- l4 I& b  D

4 S0 d: K, q7 G点击下图中的按钮可以添加比例线。(帮助文档使用的是老版本,新版本中者按钮旁边还有个按钮,可以添加纵向的比例线)
) y  h$ M0 W) Y6 g
# z+ z3 y7 w( s* R8 ?- A8 y+ X8 Y$ t7 |, ]/ h

9 v5 I- K6 Z8 u+ Z4 N6 M' O * v$ p: _) u- j: ~; a( F3 x
之后把上方的比例线移至地板上端并将比例改为90%,下方的比例线则移至地板最下端并改为160%。
  z- o( D: o: e! q : v. K" H1 y( a: e( `" I7 e
& f" K% j; H8 c

. g/ ?9 d9 }" `9 Z你可能想知道如何设置到正确的比例,最好的方法是使用角色模型(actor placement tool),SceneEdit提供角色模型方便你编辑而不必频繁测试,如下图点击Place actor按钮。
( o  u: @! p8 h. D6 n) X' s5 V% w6 \$ `
* P: n' z- F9 l( J; j3 i$ ^+ Y
, b* y/ O7 F( X2 y8 X" s: n
3 Y, R" Q- p5 Q7 x+ V8 f7 {9 w. Y/ J" ~( [  Z' l, q
 
  |1 I1 r0 {' _0 J这时会弹出一个窗口让你选择使用哪个角色。在“data\actors\molly” 文件夹中找到molly.actor并载入。这时候你的鼠标就变成了一个角色模型,你可以移动鼠标到任何位置看看效果,这时点击右键角色会改变方向,点击左键会暂时将角色模型放下,以后再需要用时点击Place actor按钮就可以。
2 `) z( b4 T2 H" U  {$ m1 X7 \4 N ) l/ [& a6 w) Z$ L- e
 [修饰区域]
1 B$ E; h: W$ S ; M0 U6 o1 Q- J( _2 z# ^4 {
接下来我们可以添加一些小效果,比如当角色站在远处的小角落时让角色变暗一点。
* s% i7 C4 ?3 p 
7 x6 R$ v6 o# p! z' q1 G# f$ V我们可以添加一些特殊的区域来影响角色的颜色和缩放,这些区域被称为修饰区域(decoration regions)。8 j5 z+ m* Z* d+ o: u9 v  t

" B6 {1 c" D' U, J; H+ Y7 [在layer列表中选择main,并点击下图的按钮添加一个区域。
" R7 _) @/ ^, x( Y. C/ I  D- R# H9 R5 n8 @2 q: a

$ Q8 e4 V0 \0 Q) m9 b8 R. n) n( Q6 G2 l' t7 o6 h1 M
# G# x3 B0 w5 ^4 Z: ~$ u0 H

' p! `+ m' C2 w8 f将名称改为"shade",并将类型由layout改为Decoration。注意信息栏中的Clolor项,选择一种颜色后,在这个区域内的角色绘制时就会混合这种颜色。为了达到阴影的效果,我们指定为浅灰色。
8 q$ o6 ~  m; \3 }+ P" f
( Y6 k% R5 z6 ?) a) i3 I) ~- U
- c" E0 L* Q' e* b$ e3 x0 N8 z3 }  x
 
8 B: O2 M5 b7 P# {改变scale项的话角色在区域内的话就会使用这个比例而不是比例线的,选0则不影响。5 E' d# m, j: b. `) Q! G
 
  h0 N( @4 K6 k) T# }) k3 Y8 e" X注意,设定颜色后必须满足以下两个条件才能实现:6 f4 @% g: U. B- h% B  @$ E" G3 a7 C
1、游戏必须运行在加速模式中,兼容模式下无效
8 P  Y1 Q' O) T* D- G" d- I2、对象必须将Colorable属性设为真8 `: O  b8 L  i6 E; w

7 q- f. Z9 ?" ^. s, m# S1 G9 D最后将区域移动到合适的位置并调整形状:
! U# |! W: b: |2 M2 H$ j$ X+ A6 |, `. m4 \  k1 V+ |
' K  m! M0 o! T  x' |0 V
 
) p+ S  x% z$ Y. b2 x9 ?6 s4 [1 K
( G6 W, l- ?- Z0 R* Q$ p8 J: B9 H注意:修饰区域影响角色角色的绘制,所以必须将修饰区域设在node列表的末尾。
. c+ I5 W, G0 `9 X 2 t$ l7 @, K3 {8 h5 V5 V, `! u9 R
你可以回PM测试一下或使用角色模型看看效果。$ U- a; `: l8 i1 c
% |' N3 c+ x2 g1 R
这一章结束了~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-9-17 22:58 | 只看该作者
感觉比前几篇复杂些……末尾有处“注意”看了不是很清楚……% `4 ~. n( S% c0 j4 }2 U, k
0 i+ U) @8 m: s  N: A: H
注意,设定颜色后必须满足以下两个条件才能实现:. M4 x* W+ N( r9 j5 [( I7 {
1、游戏必须运行在正常模式中,兼容模式下无效——正常和兼容模式指的是?# w# V6 J. C4 \
2、对象必须将Colorable属性设为真——此属性设定的位置?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-9-18 09:55 | 只看该作者

回 1楼(naptid) 的帖子

话说刚才有段时间一直上不了论坛- -, W2 w" I8 K- u6 \9 Z2 C
8 ?" }' `* t3 s1 \. T% e# L
这里忘了说明:
/ a/ Z0 ~# p) }8 O1、修改了,应为加速模式(accelerated mode),默认是打开的,我也不清楚具体的含义- -4 Y4 B; x- C& _; a
2、会受修饰区域影响的有角色和自由实体,自由实体的话,在左下角的信息栏仔细找找,就有这个选项。至于角色,我暂时没找到设置的地方,默认开启。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表