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

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

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

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

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

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

再发一篇,争取明天把9个步骤发完。
# p5 n+ f* ]* C+ k* X - x- N  h; m3 K& V6 Z# s
这一章将完成场景的粗略设计,在SceneEdit打开MyScene.scene。
4 i9 r& d0 N. |1 K6 n7 P, u; ?& T 
* e5 ~9 d' n4 x4 S[自由实体]& R3 h) d* O2 M1 V
 
$ M( R# v# U& G  g/ Z! U现在场景中的椅子仍然看起来像是画在地板上一样。之前我们使用创建desk实体和behind_desk区域这种方法实现了桌子的遮挡效果。这种方法是非常灵活的,对于大型物体和无规则形状的物体尤其有用。但对于小一点的东西我们可以使用更简单的方法:将它们创建为自由实体(free entities,希望有人提供更好的翻译- -)。接下来以椅子为例。6 J. j2 I) @( q9 j+ L- R2 z
 
. H( N7 `. ^. R" p1 @9 l6 T什么是自由实体?之前我们所使用的常规实体:比如背景和桌子,它们在绘制时是按照场景布局(即node列表中的顺序)来绘制的。而自由实体和角色一样,绘制顺序是由它们所处的位置决定的(换句话说,由它们处于哪个区域里决定。这样看来场景中的npc就应该作为自由实体)。接下来具体讲解。3 a$ I) e% Y# i7 n/ d( n
 ! ^, N( c4 `( p# G$ O1 F! b- s
首先,在ProjectMan中为Myscene文件夹导入椅子的图片,在“data\tutorial\gfx”选择chair.bmp并导入。
  r6 @6 m: z% U9 X6 _ 
% D% G0 Q4 o+ _2 E5 H/ T( Q1 \, v% j* W( n$ s
返回SceneEdit。在layer列表中选择Free entities项,下面node列表会显示当前所有的自由实体,现在还是空的。点击Add entity并选择Add sprite entity。一个“new entity”就创建好了。将名称改为chair,标题也可以改为chair。 9 Y7 R9 B/ M1 V/ H% X0 u
! k" F1 V  G1 E
9 N2 x* O( h2 @, B0 s( }2 C! m
: L, z" j% X5 R% _; C+ _5 K
) W% n% C" c) ~* j' @5 U# n
接下来为实体指定图像。点击sprite栏后面的“...”按钮选择之前导入的chair.bmp。将实体chair移动到场景中的位置:
/ o. f! W: s9 f. J' r- p6 Q9 ~$ p4 p& e. _0 t

  w/ r+ P  q2 \2 ?" ^6 b8 J& L
. R! Z% A. `$ S, I+ [7 `2 K4 W9 ^3 q9 ]1 g
 
& O4 G# G, t4 A9 X保存并测试一下。你会发现角色总是在椅子之上,原因是当一个区域内存在多个对象时(例如floor区域内存在角色和椅子两个对象),引擎按它们的纵坐标(即Y轴坐标)决定绘制顺序。角色的坐标已经被设定为由她的脚所站的位置决定了,但是椅子的坐标默认由图片左上角坐标决定(这样当角色与椅子重合时角色纵坐标总在椅子之下,引擎就总是先绘制椅子,再绘制角色了)。我们要做的就是让椅子的坐标也由椅子脚决定,方法是使用一个sprite而不是简单的BMP图像作为chair实体的图象。sprite在wme可以被视为包含了更多信息的图象,其中一项附加的信息就是焦点(hot spot),焦点可以指定sprite的基准点,实体所处的坐标由基准点决定。我们要做的就是将热点设在椅子脚上。1 o, M7 J) N: g! _. h# [
: z9 B  M  r3 j0 l( b$ Y# f8 L
首先,为chair实体创建一个sprite。返回PM,右键点击Myscene文件夹并选择“Add->Add sprite…”命令。在弹出的模版选择窗口中,选择Empty sprite模版,并将名称改为chair。 
! b- w/ d$ F9 ?  L  {! P( V
6 @/ [$ c6 c: e% k! r7 d' x
5 c6 k+ q& o6 }' z: g2 x0 i1 q
3 o& j6 o/ S! T- E/ `, B9 {: j4 K6 _& H: G
$ l# h- k/ L: \9 g
在MyScene文件夹中一个名为chair.sprite的新sprite创建好了。双击chair.sprite后PM会自动调用SpriteEdit工具帮助你编辑。现在这个sprite是空的,我们首先要添加一个帧(frame)来放椅子的图片(添加多个帧并设定一些信息后就是动画了)。点击Add frame(s)按钮并选择chair.bmp文件4 r( A$ f3 [* ~2 G2 j; ~

  ~! e& w5 Y. O( ?1 n0 W( |# ]
$ ?8 m1 z. b3 X& |
& J3 c9 n: p8 p, `
+ y  R/ B) F2 a) f/ Z& Z; \ # j+ A  R6 e9 Z+ g, H9 ~2 R& M
接下来需要改变焦点的位置。有两种方法:一是在右边的预览窗口里拖拽图片使焦点(就是那个红色十字)移动到椅子脚的位置,二是在左下角的信息栏中找到hot spot一栏填写坐标135,174。6 \( R) M; ^$ n6 d
6 }, d3 b: E' B1 R9 ?* Y8 j5 G
* q. _! n# M, q: d* ^
2 q. c5 v# g' ?5 q' X- ]

/ k" g# Y( D* v+ J7 R* z
+ z2 T+ B# F; X& S 
$ Q# t- p; P% w保存并返回SceneEdit。选择chair并更改chair的图象为新创建的chair.sprite文件。你会发现椅子的图象移动了,这是因为我们改变了图像的基准点,移动图像到正确位置。保存并测试游戏。* f  G  J! p" C( _: o9 z5 L/ X
) l: S3 R5 C5 Z2 O9 S& v: x
效果应该如图所示。
2 J0 G% ?4 e0 p+ W3 U. }8 \% e
; q7 e7 q, K$ B
; C# l# q0 u1 _4 U! y/ T- H1 M$ c) D- ?3 U

& x+ T: ^1 h( T- N) Q0 i+ N " _) \& k$ q5 j; T6 G& I; V
最后要做的就在椅子下增添一块障碍区域防止角色横穿,还有设几个路径点。6 ]% D, K, v; |
1 J3 E6 M1 h5 |& z2 n
方法见步骤4和5,最后效果如下图:+ k- n5 m* J) t4 Q# O

/ N' E! ]0 U, H  D* ~1 [; X& p" f* b* X) G
/ D; B7 B! \# o4 Q3 B' v1 ?' q

) Y' D, \% O; h. |% R- n8 U; W* F
5 l$ C+ |2 E) P  m
9 z" N' i7 {! z- W6 H. M6 z关于自由实体的部分结束了。- X0 ~6 j. ^; [2 M
; {! J6 x$ o! `- M( Y
 
* l- B8 \" \( o2 c[比例线]
( f  O; a, o3 F! r 
# n' @9 U: @! H4 ]# g% A8 S3 c现在场景看起来貌似差不多了,但角色好像有点太小了,我们通过可以比例线(scale levels)改变角色的缩放效果。比例线在Scene中表示为一条绿线,在最左端标注了比例,例如现在场景里有两条比例线,中间一条70%,底下一条100%,这样角色从底部到中间行走过程中,比例逐渐由100%缩小至70%(在70%线之上时会默认恢复为100%大小),这样就实现了近大远小和不同场景人物比例不同。% }1 K; @0 B' z- i0 K0 v; s& m$ Q
8 I( ?& l, d+ ~* O/ @
比例线最左端还有一个很扁的小方框,按住小方框并拖动就可以改变比例线的位置,右键点击小方框可以修改属性(properties,可以改变缩放比例和指定位置),或删除(remove)比例线。( h4 ^6 R$ L* d: R
" b$ X9 T$ T  `2 d/ n; {
6 F, t7 {; h" P- f5 q5 W2 }
3 P% Q/ I2 f$ }0 |6 M% N

$ \+ z# J' Q4 Z' X5 e' A3 o1 |: H 5 M8 a* V: A/ b4 ?8 w# q$ H
点击下图中的按钮可以添加比例线。(帮助文档使用的是老版本,新版本中者按钮旁边还有个按钮,可以添加纵向的比例线)
" h& F5 m8 b1 r( e% T5 R/ U% ~* q& a! u  U. T; Z& U

' o1 U& O; R+ Y9 k, i6 o/ k- g2 d" j8 v' H- \7 A  F+ X# y3 v# U
 + _. ~" g' l1 V! u
之后把上方的比例线移至地板上端并将比例改为90%,下方的比例线则移至地板最下端并改为160%。
: _; @! B& x8 o0 \$ Q 
, _; V  ?" u, n, `: c4 O
3 e. n( y8 s. n4 P2 e1 V # V  w: g* y( h8 Z8 J
你可能想知道如何设置到正确的比例,最好的方法是使用角色模型(actor placement tool),SceneEdit提供角色模型方便你编辑而不必频繁测试,如下图点击Place actor按钮。
9 ?0 q* e& L' I, H; B6 I: K2 D  s# w7 k9 ~# p# D
9 P9 e! ]3 V( P; {: r/ X2 w
1 k$ }1 K# `( ~' _6 D
/ k, r) p5 s2 Q" s; R
 
. R2 k4 [! l  E' A; h& C% W- r这时会弹出一个窗口让你选择使用哪个角色。在“data\actors\molly” 文件夹中找到molly.actor并载入。这时候你的鼠标就变成了一个角色模型,你可以移动鼠标到任何位置看看效果,这时点击右键角色会改变方向,点击左键会暂时将角色模型放下,以后再需要用时点击Place actor按钮就可以。
* E9 ?, A8 y4 H 
$ s8 }& j" l* L6 a7 M3 r$ h [修饰区域]
; g8 P3 m( {; o: H1 M5 e! ^7 v 
8 @$ z+ _. i+ x# v  e  d0 `接下来我们可以添加一些小效果,比如当角色站在远处的小角落时让角色变暗一点。( N, P/ T  P8 a2 h  `7 B  E
   S/ h* f( p( v8 ]
我们可以添加一些特殊的区域来影响角色的颜色和缩放,这些区域被称为修饰区域(decoration regions)。
: y. L! @' j$ P5 d. T& {! l
7 n8 }0 R9 O; H9 d4 p2 a3 k+ G在layer列表中选择main,并点击下图的按钮添加一个区域。
3 C- C6 X$ J2 a: g: b1 }
1 G, K- V0 y' k: l+ f" B2 }
: r2 v$ V( k! |5 o3 J# ?+ {. ^) q3 I. e, |2 |  x$ g9 Q: ~3 {3 W4 O
9 }( w; @$ N; m4 A% n+ h0 J

: l( L3 u. P% H. T- A. S) k将名称改为"shade",并将类型由layout改为Decoration。注意信息栏中的Clolor项,选择一种颜色后,在这个区域内的角色绘制时就会混合这种颜色。为了达到阴影的效果,我们指定为浅灰色。
6 W- Y. h" V; F" J: L$ R0 @) Z" k+ D7 B+ x' e# ~' v

) n, y9 M; h, q" {9 ?$ D
9 \# S3 v( i. j9 _+ c+ i , z- ?: K: B9 x3 r
改变scale项的话角色在区域内的话就会使用这个比例而不是比例线的,选0则不影响。" }6 z* K. d' G' c8 K
 2 ^' s( W% Y% c4 u
注意,设定颜色后必须满足以下两个条件才能实现:6 o* C$ ^9 X. P+ g4 l
1、游戏必须运行在加速模式中,兼容模式下无效
' N& N6 z3 \5 Y5 N, R* Q; ^2 q2、对象必须将Colorable属性设为真
4 a. R* b3 X% s% h1 Z/ p
8 H; h: O( a/ c1 R最后将区域移动到合适的位置并调整形状:3 V. W' L( z; b  R

2 i0 g1 Y$ ?) R9 Z$ Z5 d- v: z6 }# e: b; c% {2 i
 - w1 j* V$ w8 R; M: `* V
; E" d% t; j0 @  s
注意:修饰区域影响角色角色的绘制,所以必须将修饰区域设在node列表的末尾。
) R! \' v- k+ D  D 
/ T: B4 ], M* s( E: z7 ~$ D你可以回PM测试一下或使用角色模型看看效果。
) {/ Y& \( L8 J; }$ J
$ O# f! l& F& m/ N1 Q% h: Y这一章结束了~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-9-17 22:58 | 只看该作者
感觉比前几篇复杂些……末尾有处“注意”看了不是很清楚……1 K% G3 v5 r( Q
* ?( J. I5 n1 M
注意,设定颜色后必须满足以下两个条件才能实现:
: N% R5 v, k" z) r# F2 O1、游戏必须运行在正常模式中,兼容模式下无效——正常和兼容模式指的是?
" _, V! K& Z. U8 c- N8 c% g- ~# \2、对象必须将Colorable属性设为真——此属性设定的位置?
回复 支持 反对

使用道具 举报

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

回 1楼(naptid) 的帖子

话说刚才有段时间一直上不了论坛- -6 ]5 h& ]  Y# k% J; l# S7 @

1 A6 q9 S) [5 G8 |0 |这里忘了说明:1 C; e: v1 p4 j0 `
1、修改了,应为加速模式(accelerated mode),默认是打开的,我也不清楚具体的含义- -% S3 j0 `  h% H9 ~$ r6 z
2、会受修饰区域影响的有角色和自由实体,自由实体的话,在左下角的信息栏仔细找找,就有这个选项。至于角色,我暂时没找到设置的地方,默认开启。
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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