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

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

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

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

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

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

再发一篇,争取明天把9个步骤发完。
& }8 i2 J2 i; ^7 [ 
4 u0 ^' q- D3 M0 f1 V这一章将完成场景的粗略设计,在SceneEdit打开MyScene.scene。  Q. d" M0 l0 a2 R; y5 ]: {
 
5 p# o4 i1 r* l: l9 i" M- j, ~[自由实体]
, i3 t' u& q( Z$ L/ f( k 
9 i1 f* G0 H) k/ j8 b0 H. f8 d+ L& c现在场景中的椅子仍然看起来像是画在地板上一样。之前我们使用创建desk实体和behind_desk区域这种方法实现了桌子的遮挡效果。这种方法是非常灵活的,对于大型物体和无规则形状的物体尤其有用。但对于小一点的东西我们可以使用更简单的方法:将它们创建为自由实体(free entities,希望有人提供更好的翻译- -)。接下来以椅子为例。
4 N1 g1 j$ y8 P: o8 X 
+ E$ A4 a6 g: |+ Z/ C# o$ x& C什么是自由实体?之前我们所使用的常规实体:比如背景和桌子,它们在绘制时是按照场景布局(即node列表中的顺序)来绘制的。而自由实体和角色一样,绘制顺序是由它们所处的位置决定的(换句话说,由它们处于哪个区域里决定。这样看来场景中的npc就应该作为自由实体)。接下来具体讲解。' v- o" l8 Z) B6 Z2 a; J
   S. N5 O. g, U8 f( [* l  f
首先,在ProjectMan中为Myscene文件夹导入椅子的图片,在“data\tutorial\gfx”选择chair.bmp并导入。. w5 @$ _" u  G, O' G+ V, z
 , a& t( a& i6 S7 `2 `0 _! `# g
0 r9 s. n* p) A: V
返回SceneEdit。在layer列表中选择Free entities项,下面node列表会显示当前所有的自由实体,现在还是空的。点击Add entity并选择Add sprite entity。一个“new entity”就创建好了。将名称改为chair,标题也可以改为chair。 
* G& f6 W: ]2 X! R( ^. Z
0 v1 Z: m# T* P4 A. K/ Q: e
; S" n( @9 s' [  O% b9 N3 N# s  }* h+ L8 h

3 `  `. u, \, ]& C& h接下来为实体指定图像。点击sprite栏后面的“...”按钮选择之前导入的chair.bmp。将实体chair移动到场景中的位置:9 J4 `! D, b& W" w

! _$ l0 e* q" B( y! o7 E
) q: l/ E) w% H. Y. H' X4 ~9 U5 h% a5 j* Y9 d% }. k/ H

" e. x2 H$ l# {& p  T  O  r8 I 1 j' h% M: S: ]9 M* \
保存并测试一下。你会发现角色总是在椅子之上,原因是当一个区域内存在多个对象时(例如floor区域内存在角色和椅子两个对象),引擎按它们的纵坐标(即Y轴坐标)决定绘制顺序。角色的坐标已经被设定为由她的脚所站的位置决定了,但是椅子的坐标默认由图片左上角坐标决定(这样当角色与椅子重合时角色纵坐标总在椅子之下,引擎就总是先绘制椅子,再绘制角色了)。我们要做的就是让椅子的坐标也由椅子脚决定,方法是使用一个sprite而不是简单的BMP图像作为chair实体的图象。sprite在wme可以被视为包含了更多信息的图象,其中一项附加的信息就是焦点(hot spot),焦点可以指定sprite的基准点,实体所处的坐标由基准点决定。我们要做的就是将热点设在椅子脚上。
( Q. M* U: m4 u/ @" K& B  \ ( _, ]  f& K' O3 G7 E+ _7 Q
首先,为chair实体创建一个sprite。返回PM,右键点击Myscene文件夹并选择“Add->Add sprite…”命令。在弹出的模版选择窗口中,选择Empty sprite模版,并将名称改为chair。 + q! ]9 W5 O1 m- @; r0 K9 f
3 N8 k2 l, h6 @1 Q: N7 u. v
. O7 a) M* X7 N( K/ S, o9 E
5 B& o8 g% ?1 S' Y

3 _8 ~" J6 U  I: y
# z9 u& ]: x* S3 e+ i- z在MyScene文件夹中一个名为chair.sprite的新sprite创建好了。双击chair.sprite后PM会自动调用SpriteEdit工具帮助你编辑。现在这个sprite是空的,我们首先要添加一个帧(frame)来放椅子的图片(添加多个帧并设定一些信息后就是动画了)。点击Add frame(s)按钮并选择chair.bmp文件
& W' X2 J* i$ t8 ^% d( ]4 ]! n/ N0 C  ^1 r1 r: t( q
+ I) }9 T$ D  O, i1 W
8 f: b' ?& h" E2 f$ a1 v8 ^; W+ i

* s- d# p( |+ a) R" r" P0 s2 u) X; _ 
8 g; k8 q; ?$ ?. X, w6 I# |* Q接下来需要改变焦点的位置。有两种方法:一是在右边的预览窗口里拖拽图片使焦点(就是那个红色十字)移动到椅子脚的位置,二是在左下角的信息栏中找到hot spot一栏填写坐标135,174。0 `, m: ^" c1 l' W! S# B& s
0 H2 B. r' r6 I
* R5 j' y6 i! e$ d
5 Q6 w& o' a) P  w

" P5 Z. P' n/ e# ~! H  E# l& E' u' Y# j- S9 M. t9 C$ n8 a9 y
 
  m  O& I3 c6 `5 w保存并返回SceneEdit。选择chair并更改chair的图象为新创建的chair.sprite文件。你会发现椅子的图象移动了,这是因为我们改变了图像的基准点,移动图像到正确位置。保存并测试游戏。, u( `+ V& |5 {

# Q9 ?* t4 c* f" i6 H6 n; m$ s- D效果应该如图所示。0 H  H/ U! Q4 p3 U! {0 k4 t; W
3 I, v5 G1 F/ U9 a3 ]5 {
6 O+ `9 B2 V; Q$ _# y! v
0 k" l8 k" H; G! J4 f- Z
; I% H( X$ N& |0 P/ Q
 9 ~. W/ V5 b4 k. Y/ F& {
最后要做的就在椅子下增添一块障碍区域防止角色横穿,还有设几个路径点。
6 K% f* b3 }% ?9 K5 w: a- } # C) E8 r7 E, v& I& V2 j
方法见步骤4和5,最后效果如下图:+ K1 q2 a: h% w' u9 _

1 s% V6 R5 q' n% d8 H; O) F4 i# ^" m) d
/ Y0 S. c5 `5 `2 U: a& o, h
1 P' `9 }8 M& q& |- R; K
- [; t; d" U& O- J5 T( e5 m

3 ?# P! d9 w& r, E& w" C, |关于自由实体的部分结束了。% ?3 k' Y* X8 T0 ?

: r+ A7 j3 f- |# x( F : o+ R9 n- m3 x, U" g$ o  R$ V* T5 R
[比例线]/ h2 _* b+ a7 B/ R, x
 5 x4 \+ \& M- v+ X7 E: H- N0 V
现在场景看起来貌似差不多了,但角色好像有点太小了,我们通过可以比例线(scale levels)改变角色的缩放效果。比例线在Scene中表示为一条绿线,在最左端标注了比例,例如现在场景里有两条比例线,中间一条70%,底下一条100%,这样角色从底部到中间行走过程中,比例逐渐由100%缩小至70%(在70%线之上时会默认恢复为100%大小),这样就实现了近大远小和不同场景人物比例不同。- }( z0 b1 v  N. a( J. J* i
% z0 K  g, B7 U. Q  k
比例线最左端还有一个很扁的小方框,按住小方框并拖动就可以改变比例线的位置,右键点击小方框可以修改属性(properties,可以改变缩放比例和指定位置),或删除(remove)比例线。+ I5 l) Z1 u3 r$ Y! Q! o

3 G, @0 W" {2 H9 O5 v9 }- ^+ f% V) I+ c, C1 b
, U3 ]; W( _$ \, i8 M2 q, K+ |3 c
4 D9 |6 ?; v5 Q9 J; E6 ~
  ^" `: ~7 Y" T# F) P
点击下图中的按钮可以添加比例线。(帮助文档使用的是老版本,新版本中者按钮旁边还有个按钮,可以添加纵向的比例线)
9 E) J8 e" @+ g+ M2 H/ _5 j# o7 x. y' F, Y& L: v7 h% o, G5 a/ o( B: j

/ g$ y9 A: V. J/ f+ p/ N
4 [+ I% j3 k' r$ `# z   l* \6 ]0 Y  Q0 D( U3 P
之后把上方的比例线移至地板上端并将比例改为90%,下方的比例线则移至地板最下端并改为160%。  u$ R! e* \5 a' ?) U3 N! q
 ' K9 Q. S# q0 Y- n2 B: f1 U
7 z- h/ J% G: O  E1 k/ ?" W' V

% Y+ w" r* M0 O+ Q$ ~你可能想知道如何设置到正确的比例,最好的方法是使用角色模型(actor placement tool),SceneEdit提供角色模型方便你编辑而不必频繁测试,如下图点击Place actor按钮。  h9 A) m: g" a& C, s: H. W+ m4 v
" e0 A# h* F: N9 T$ g# ^; C, T

5 K: h" E. S/ B3 v- @2 G7 n" |2 S) h: h# C8 E6 q3 V8 ?7 H/ e; W
0 r( q4 j9 E3 R$ u$ c9 C+ `
 
/ |4 }8 U+ ]# k  }% @. Q5 ^这时会弹出一个窗口让你选择使用哪个角色。在“data\actors\molly” 文件夹中找到molly.actor并载入。这时候你的鼠标就变成了一个角色模型,你可以移动鼠标到任何位置看看效果,这时点击右键角色会改变方向,点击左键会暂时将角色模型放下,以后再需要用时点击Place actor按钮就可以。
5 _0 Y$ n7 }2 v( N) C3 R$ R 
1 @; i5 y& i9 I [修饰区域]& `+ ?7 Q& R6 E
 
9 H. a& Z  k) r7 N' J接下来我们可以添加一些小效果,比如当角色站在远处的小角落时让角色变暗一点。
, u% |" R  S; w1 S ) H" p4 O5 o1 J) X: B, I' K6 y
我们可以添加一些特殊的区域来影响角色的颜色和缩放,这些区域被称为修饰区域(decoration regions)。
/ J" T$ G4 S  ~& U , U2 a$ D' s! N) g- `' f
在layer列表中选择main,并点击下图的按钮添加一个区域。+ n& N  |- A6 N( O

& m1 [  C, g; w; t9 g3 N$ W! C! a  I+ i. R, o7 C0 j

. F' ~" w- u  V8 W0 E/ v8 J; c, E: ?% q8 P3 C
' u  O5 P  K2 x0 C9 W7 E+ O
将名称改为"shade",并将类型由layout改为Decoration。注意信息栏中的Clolor项,选择一种颜色后,在这个区域内的角色绘制时就会混合这种颜色。为了达到阴影的效果,我们指定为浅灰色。
5 V9 n/ s7 r4 K7 O6 y$ {  I
3 ]& Y7 F7 Z2 V  G' E4 ~8 _  d% Y
. X: ]9 x* S% B: L- I) |
. E, p! i% @+ W2 M ( }+ k) L$ _- ^4 m
改变scale项的话角色在区域内的话就会使用这个比例而不是比例线的,选0则不影响。
" L; R7 x0 E# s 
- a& c7 x( q. @  G注意,设定颜色后必须满足以下两个条件才能实现:; c" u- z3 z; Y
1、游戏必须运行在加速模式中,兼容模式下无效3 l; k/ b4 c9 n9 j
2、对象必须将Colorable属性设为真4 K7 X: {: W- W7 u
. U& W! ~( T, Y% V7 L/ T- o; Z# l' j# B9 p
最后将区域移动到合适的位置并调整形状:6 O. A( y6 q' L9 W0 f; r
+ o7 \' I7 t: ~6 e' B( e8 w  @- ~
9 H+ b- F" g3 m9 E
   X' Y: g- G& i5 H5 J. q$ C) q

& j+ M# P0 Z4 N, k" {8 U. y6 M注意:修饰区域影响角色角色的绘制,所以必须将修饰区域设在node列表的末尾。% h3 e* T4 z, q, Z$ r# Q) C! _6 P- {
 " U% ~) l, ^/ s# h& n- p; g
你可以回PM测试一下或使用角色模型看看效果。
9 w, x# L/ Z& B5 ?. f8 y
) q% i& r& G5 W& D这一章结束了~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-9-17 22:58 | 只看该作者
感觉比前几篇复杂些……末尾有处“注意”看了不是很清楚……" N0 A+ w3 @4 I& ]0 T
+ k" \8 R2 l% i, `9 A' X
注意,设定颜色后必须满足以下两个条件才能实现:3 \6 t- `: e' S$ L
1、游戏必须运行在正常模式中,兼容模式下无效——正常和兼容模式指的是?
2 e9 ^. |/ |& _: L# z2、对象必须将Colorable属性设为真——此属性设定的位置?
回复 支持 反对

使用道具 举报

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

回 1楼(naptid) 的帖子

话说刚才有段时间一直上不了论坛- -
0 B- }, T8 q0 @
; O+ ?# l1 M. V5 j3 ^这里忘了说明:
; _$ D# d. g6 h4 j" U; b4 h$ q& i1、修改了,应为加速模式(accelerated mode),默认是打开的,我也不清楚具体的含义- -) c( {  e2 y2 r- L7 `+ B- F0 C3 W
2、会受修饰区域影响的有角色和自由实体,自由实体的话,在左下角的信息栏仔细找找,就有这个选项。至于角色,我暂时没找到设置的地方,默认开启。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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