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

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

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

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

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

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

再发一篇,争取明天把9个步骤发完。7 F2 m1 b: u, n
 , |, Z- q; K: {/ I; |
这一章将完成场景的粗略设计,在SceneEdit打开MyScene.scene。
$ S  g2 p5 h" [ 
, w# H8 O8 t/ J/ m0 Q& [[自由实体]( R! d3 d% ^( N
 6 }% |/ X8 G0 L2 W( z
现在场景中的椅子仍然看起来像是画在地板上一样。之前我们使用创建desk实体和behind_desk区域这种方法实现了桌子的遮挡效果。这种方法是非常灵活的,对于大型物体和无规则形状的物体尤其有用。但对于小一点的东西我们可以使用更简单的方法:将它们创建为自由实体(free entities,希望有人提供更好的翻译- -)。接下来以椅子为例。! K8 A* F% z1 k' N
 
2 Q. b% }, k0 N; Z% k1 Q$ ]什么是自由实体?之前我们所使用的常规实体:比如背景和桌子,它们在绘制时是按照场景布局(即node列表中的顺序)来绘制的。而自由实体和角色一样,绘制顺序是由它们所处的位置决定的(换句话说,由它们处于哪个区域里决定。这样看来场景中的npc就应该作为自由实体)。接下来具体讲解。
( Q/ A, E0 `. l8 R 
' d5 U/ J6 T3 Z/ I, x# X' \6 ^首先,在ProjectMan中为Myscene文件夹导入椅子的图片,在“data\tutorial\gfx”选择chair.bmp并导入。' c# d' q/ M$ t8 T- u9 E' Q! S/ |# ?
 ; D) e  R  G' H& R0 t/ K

+ a* {' v# H# }1 q, X- V1 m返回SceneEdit。在layer列表中选择Free entities项,下面node列表会显示当前所有的自由实体,现在还是空的。点击Add entity并选择Add sprite entity。一个“new entity”就创建好了。将名称改为chair,标题也可以改为chair。 & R: a: E$ v* y1 {

6 m. N0 ^0 I4 c2 n6 J3 K4 ]( q4 g: [2 m2 S( y( O6 @, j8 x* ^) n
( S- _1 g) V8 e$ G+ A! d- \

( N, u  m9 z8 E* Y; {4 P+ o接下来为实体指定图像。点击sprite栏后面的“...”按钮选择之前导入的chair.bmp。将实体chair移动到场景中的位置:
" n' S& q- h3 W2 s" b- {' R- D$ |; S. r  ^8 w

4 a! ]. ?7 v3 E3 C/ z
' t9 T% j4 B2 H7 [4 o
8 e* Q% _/ S& J' Q- h 
" p4 q  G) v8 |  @6 f- [! b: M4 d) ^保存并测试一下。你会发现角色总是在椅子之上,原因是当一个区域内存在多个对象时(例如floor区域内存在角色和椅子两个对象),引擎按它们的纵坐标(即Y轴坐标)决定绘制顺序。角色的坐标已经被设定为由她的脚所站的位置决定了,但是椅子的坐标默认由图片左上角坐标决定(这样当角色与椅子重合时角色纵坐标总在椅子之下,引擎就总是先绘制椅子,再绘制角色了)。我们要做的就是让椅子的坐标也由椅子脚决定,方法是使用一个sprite而不是简单的BMP图像作为chair实体的图象。sprite在wme可以被视为包含了更多信息的图象,其中一项附加的信息就是焦点(hot spot),焦点可以指定sprite的基准点,实体所处的坐标由基准点决定。我们要做的就是将热点设在椅子脚上。
6 w1 Q- F8 R. G6 z, O5 g) s
  E! W& r0 C, R  {* l7 i! M( X+ Q首先,为chair实体创建一个sprite。返回PM,右键点击Myscene文件夹并选择“Add->Add sprite…”命令。在弹出的模版选择窗口中,选择Empty sprite模版,并将名称改为chair。 
/ W0 F$ S: W- N& i9 ~6 o
7 N6 C9 B; X& U) Y% k+ ?" B: L3 L$ q/ R4 P( Y2 s' e  Y, K

) K+ m. }' F& ?0 V# k2 }( U0 G5 P6 \$ c) v1 W& }- e

+ n. D, v+ v* A% |% ?* e9 }5 p, H7 k在MyScene文件夹中一个名为chair.sprite的新sprite创建好了。双击chair.sprite后PM会自动调用SpriteEdit工具帮助你编辑。现在这个sprite是空的,我们首先要添加一个帧(frame)来放椅子的图片(添加多个帧并设定一些信息后就是动画了)。点击Add frame(s)按钮并选择chair.bmp文件
8 y  _( C6 \. J$ Q. H, m  P/ O! g* N& |7 `" V# M
; U1 E  T6 E6 v, f
# D& [9 |1 w( F" C% O6 S0 q

! D* i/ s, `9 x% m& S ( P" V* K. }: x$ A0 ^( [
接下来需要改变焦点的位置。有两种方法:一是在右边的预览窗口里拖拽图片使焦点(就是那个红色十字)移动到椅子脚的位置,二是在左下角的信息栏中找到hot spot一栏填写坐标135,174。* s# J7 h% d1 M) j4 B) E; O
, X* ^7 n- Q+ j3 a- l/ N

0 s) t, r# ~: E$ m5 E6 j9 c3 `; f, l4 d
8 w2 g& O: I9 c! d' D

, G8 z/ p3 \* p+ @/ F 6 \; I; p- h/ @  c
保存并返回SceneEdit。选择chair并更改chair的图象为新创建的chair.sprite文件。你会发现椅子的图象移动了,这是因为我们改变了图像的基准点,移动图像到正确位置。保存并测试游戏。) o7 }6 p. q+ ]5 G& N0 _7 R
) t7 q* c! ^" {( `% W- _
效果应该如图所示。+ W0 K5 n5 T: Q5 Q9 |3 v
' [+ n, L, \1 |; M

& v& C. ]# e  c/ j, @+ M% {; Q& |" Q. C9 a6 m6 e) }6 b
# X6 G" B' q9 Z; v/ S
 
% _& u( K- x5 i0 v- w4 }最后要做的就在椅子下增添一块障碍区域防止角色横穿,还有设几个路径点。
/ ^: U1 @% W9 \: {2 I) s. X
) G2 A% b' `( B方法见步骤4和5,最后效果如下图:
9 s+ V: ~% e/ q) X6 q6 m9 ^4 y, F+ C9 b8 P3 [5 X( Y

, t( [9 b/ c# s2 a5 X$ J" Q
: `0 B; ~4 F5 D5 j. m; k( X1 {$ @! R/ q3 v

9 Y- N! V/ l, A) q# F/ N9 Y0 T. O1 E/ p& k0 l3 h* |
关于自由实体的部分结束了。
& v! ?, d: q2 }2 }; m
) K4 |, u2 o0 b# E# c2 K 
( i: H3 J! t+ a# E9 x: Y+ z[比例线]
0 J7 k( }/ U& P, G; b, c ) _3 Y/ K0 k! j) m' l# ?7 q0 J
现在场景看起来貌似差不多了,但角色好像有点太小了,我们通过可以比例线(scale levels)改变角色的缩放效果。比例线在Scene中表示为一条绿线,在最左端标注了比例,例如现在场景里有两条比例线,中间一条70%,底下一条100%,这样角色从底部到中间行走过程中,比例逐渐由100%缩小至70%(在70%线之上时会默认恢复为100%大小),这样就实现了近大远小和不同场景人物比例不同。9 u* t) S! Z; h. j
% n9 w% B+ S& Q/ u0 G
比例线最左端还有一个很扁的小方框,按住小方框并拖动就可以改变比例线的位置,右键点击小方框可以修改属性(properties,可以改变缩放比例和指定位置),或删除(remove)比例线。
" S+ _; e( ^3 A: h) Q' h; S' J  b, J: u6 H

1 |( V7 t4 n; {" ~# W. j1 n. c% ~$ I) Q1 k7 N# l7 n2 b- ^

5 v# j5 O5 V7 R  x+ l$ J " b: Z' q  a" j  ]1 H$ j+ o; z
点击下图中的按钮可以添加比例线。(帮助文档使用的是老版本,新版本中者按钮旁边还有个按钮,可以添加纵向的比例线)
+ T2 p& N2 `: N  v* f8 r
- Y( M/ I; {! l# ]" b; ]; `
# b* y0 v0 z% {$ \( [+ j. D! m$ S: r. z5 [; w7 s- r& L# U  S) |
 
; V; V3 e& \3 Y( T8 H9 t+ P之后把上方的比例线移至地板上端并将比例改为90%,下方的比例线则移至地板最下端并改为160%。- ]8 u. N4 G- M( C  t, m
 8 W* B$ c4 G4 @- M6 U: s
1 C5 w4 ^( B% P% c; \( n

1 S: M/ P6 B8 `+ w: i0 g. e, A你可能想知道如何设置到正确的比例,最好的方法是使用角色模型(actor placement tool),SceneEdit提供角色模型方便你编辑而不必频繁测试,如下图点击Place actor按钮。
  q* `7 i( @; n. _" V9 I- N$ n9 Z
4 E& W* S; g# I2 R4 d
: _: B) n9 x+ f& I, m- {+ O2 `* j$ v7 e! t
8 V2 W" Y  p, q9 c+ g
: m' ~3 Z/ r% E. z& x0 t , e# P5 h& S8 ]+ Z( {/ B
这时会弹出一个窗口让你选择使用哪个角色。在“data\actors\molly” 文件夹中找到molly.actor并载入。这时候你的鼠标就变成了一个角色模型,你可以移动鼠标到任何位置看看效果,这时点击右键角色会改变方向,点击左键会暂时将角色模型放下,以后再需要用时点击Place actor按钮就可以。* \# A* p% a% k; L
 
2 a' S5 i# t+ E8 y [修饰区域]: q4 W( @  T  }" f0 P
 ; ~& G/ t( b  e9 m, X* y& j/ j
接下来我们可以添加一些小效果,比如当角色站在远处的小角落时让角色变暗一点。
, W% s4 B1 G( x  V* r6 Y 7 \, g) q. O  }5 s4 t* V
我们可以添加一些特殊的区域来影响角色的颜色和缩放,这些区域被称为修饰区域(decoration regions)。1 @+ v' ~8 L  R" `

$ F# V. p7 D7 a" x  `2 u5 i2 X( }' \在layer列表中选择main,并点击下图的按钮添加一个区域。. p' `# T6 b5 ^1 l7 j+ k
/ G( L, k1 n/ o- x) R

$ K) [1 I! G" r& y0 _
4 C$ S) [( l, h' P. [; u7 `
) ~. x0 l* H3 K: ^  W7 s: I& x 4 E- o2 y5 Q7 w  N: ~
将名称改为"shade",并将类型由layout改为Decoration。注意信息栏中的Clolor项,选择一种颜色后,在这个区域内的角色绘制时就会混合这种颜色。为了达到阴影的效果,我们指定为浅灰色。( u& s, K& p6 n

- t- |5 t! W1 l- ^
% r, p3 Y8 ]: I, d) ^( v4 J' Y& J" ^( J
 , f, h* r( D4 i1 z' a
改变scale项的话角色在区域内的话就会使用这个比例而不是比例线的,选0则不影响。
& F5 p2 v( g) h+ P " ~9 j2 I, K& g/ ?3 L
注意,设定颜色后必须满足以下两个条件才能实现:
  \% h) `2 z  c) t  \1、游戏必须运行在加速模式中,兼容模式下无效" S7 E9 O& J. h$ X0 q7 K
2、对象必须将Colorable属性设为真- ^9 d0 c" n6 M& Q. E- Y; M
- Y& {# ^- `! X* U
最后将区域移动到合适的位置并调整形状:) e% ?, T" M- O; J0 f6 e: D

* q7 W) A& g8 D8 g+ o1 C7 A( W# m* _  o% F
 
( u( ]5 a7 M* _) @; b- D7 [- t$ t
3 U8 o4 M* V! k注意:修饰区域影响角色角色的绘制,所以必须将修饰区域设在node列表的末尾。5 s$ l/ T0 h7 z' I% K
 ; F: z" o, T/ d. \, j
你可以回PM测试一下或使用角色模型看看效果。
8 \1 Q/ K" x& d: ^ " P# y9 q. U* v- f8 X
这一章结束了~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-9-17 22:58 | 只看该作者
感觉比前几篇复杂些……末尾有处“注意”看了不是很清楚……9 O# C! ]" X( \0 J
* P$ v$ i+ _  T* P" R3 b3 J3 s4 v
注意,设定颜色后必须满足以下两个条件才能实现:
' E6 }" i% [- n% n" B% \' j5 y6 y1、游戏必须运行在正常模式中,兼容模式下无效——正常和兼容模式指的是?
  U* ]0 z" Z( R/ c2、对象必须将Colorable属性设为真——此属性设定的位置?
回复 支持 反对

使用道具 举报

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

回 1楼(naptid) 的帖子

话说刚才有段时间一直上不了论坛- -
) O! t" `  V1 o$ v, y0 T5 p& A
$ J  z3 _  r2 b这里忘了说明:
5 u- s( L/ x8 ^# T) A+ A1、修改了,应为加速模式(accelerated mode),默认是打开的,我也不清楚具体的含义- -
  S7 T* o) b" l8 s: k7 ]6 q2、会受修饰区域影响的有角色和自由实体,自由实体的话,在左下角的信息栏仔细找找,就有这个选项。至于角色,我暂时没找到设置的地方,默认开启。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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