冒险解谜游戏中文网 ChinaAVG

标题: wintermute学习笔记[9]--搭建场景步骤八、九:层、场景设置、场景转换 [打印本页]

作者: clockworkman    时间: 2010-9-18 16:32
标题: wintermute学习笔记[9]--搭建场景步骤八、九:层、场景设置、场景转换
两章内容比较少,合在一起。
8 w# J' k- z  b
$ E2 t; p: b. L4 h; B0 r: _; L" k9 P5 [  w
[层]! Z7 h% P# }5 J( [8 U! _( [) t) a
/ o, h$ T4 Q) f7 r) A" i* Y5 g
这一章我们将实现多层卷轴(原文parallax scrolling貌似是平行卷轴,个人认为多层卷轴更贴切)的效果,就像你坐车时看窗外,近处的树和远处的山川向后退的速度是不一样的,wme可以通过添加层实现场景分不同部分卷动的效果。在步骤一中我们知道如果场景所用图片尺寸大于游戏窗口,场景就会在必要时卷动,并且场景越大,卷动速度越快,假设你有三个层,分别存放三张场景图片(比如天上的月亮、远处的高山、近处的公路),并且每张图片宽度都不一样,就会分别以不同的速度卷动,实现多层卷动的效果。
- ^7 I3 [% w$ q* ^' W  L  Q2 r& |
每个场景可以拥有多个层,数量不限。$ n1 y% a! x  |1 \2 V

4 L5 W. j  N# o1 J# L2 G在本章我们将为场景添加一个层作为窗外的天空。" i1 ]) \1 Q. H/ w% A. X( A

! z( L5 p% d+ C" A1 H" G天空的图片已经在 “data\tutorial\gfx”文件夹下准备好了,在PM 中为MyScene导入sky.bmp。
* g4 f# c. e5 D
4 ~/ t/ W  g* ], x7 ~5 H在SceneEdit中打开MyScene.scene。5 M3 ^2 A! I3 {
 * \% l! J7 J( T/ G
在Layer栏中点击Add layer按钮添加新的层。. H7 t/ D$ Z) q5 t9 e$ h8 m4 A) @

8 n/ K. x# }$ I0 W; P, @/ a% T5 h3 N1 m! g" j
- ^" m$ M# I/ w  J8 j* A
+ |1 m+ a% y" ?1 ^
SceneEdit会弹出一个窗口填写层的信息(新版本里多出了一个close up选项,我没搞懂是干什么的- -大家研究研究),将名称改为sky,并将尺寸改为800,716。由于长度和窗口长度一样,这个层在水平方向不会卷动,而main层会卷动,就达到了我们想要的效果,而宽度为716,与main层相同,这样在纵方向上该层就会与main层同步卷动。' l* g2 C6 G- A- g! o+ j9 m4 ^: |  e
1 h+ v5 n: {5 V& N
9 n. }4 i+ j. q+ a+ _. \
4 H' T. ?/ ?9 q, J  q# |8 g6 h( i
点击OK。使用上下箭头将sky层移至main层上方,层的顺序影响绘制的顺序。* Y6 L4 `( V  {" {7 o
# J, Y4 f! J1 I" [& @# E
+ J. n( r) [) Q
0 Y$ T3 E& l4 i3 [
接下来要做的就是添加一个实体来放置天空的图片,如下图选择Add sprite entity,将新建的实体改名为sky并将图像改为之前导入的sky.bmp。; J- ^' [" I. X
- l. {# S, a" l
注意:新建的层可以添加实体,但只有main层可以添加区域。
, ?. i0 I" }4 D4 \; {, v5 @! W; a: C& ~+ Q3 W+ j/ V
5 v0 d; l; }+ `% w  F
+ c, I' O/ p4 ~6 J* e9 G( T' x
如下图移动到合适的位置。
; `+ _' t: \; v3 ~
' X; n* j% V" c0 ^+ X  v/ x
2 G: d6 X# Y1 f( E
+ N; I* t" z! ~. K  D( k' r$ C保存并测试一下效果。8 n8 s& V: \3 ^

+ `: Z5 k. h) Z[场景设置 ]2 `6 T5 L2 ^5 [3 m, i! F% N

; y. d2 b8 O5 e, Y6 H引擎可以自动保存场景中物体的状态,并在下次角色来访时还原,还可以使场景中的对象记住它们所使用的sprite(你可以使用脚本改变)。* L. R9 p3 Y$ ~) |% O# v7 p7 t- Q6 S
在SceneEdit左边工具栏中找到Properties选项卡,下图中红框勾选的两个选项可以决定是否开启场景自动保存的功能。
  ^$ ?: D$ _+ ~* V" @: R/ W1 Z( q4 V0 [& {$ ^$ ~! s% W
; Q) z: V' D. g( p
6 Z% v; d. b' u1 C4 ~, C

: M0 D( h, f7 O  C0 D注意:保存场景的功能与你场景中对象的名称有关系,所以你的场景中不应该有重名的对象,否则可能出错。5 ?: I( u; L/ K, {

3 V# l$ X- U( N( {[场景转换]- T" n' y2 c  b2 O2 H3 ^

) p2 {% g9 Q4 B你的游戏一般不会只有一个场景,使用脚本可以把各个场景连接在一起。我们在步骤7种已经把门做成了一个可以互动的区域实体,按之前所教的,给门添加一个脚本door.script并编辑。
. w) s' H1 U9 s* k7 Y
& T: k7 p8 v9 v# K8 p/ H5 _# ]
4 P  B1 H1 _4 K* g0 e: Q8 H 
, {- E. @6 a( y$ A" s) |# H$ D我们只需要门在左键点击后能进入下个场景,所以只需要有以下的内容
* R* q0 N) V/ R! [
: P/ ~/ r+ c! h- \2 O* H7 x( w
$ ]  _8 W/ \) ~3 |" I, c& d
#include "scripts\base.inc"
[/table]
"LeftClick"
{
actor.GoToObject(this);
Game.ChangeScene("scenes\menu\menu.scene");
[table=100%,#66ffcc]}

0 a; x. _. W! `( {6 i8 x1 g4 y* b" i$ Y/ f/ e3 z. r3 Q$ |
大括号里一共有两句命令,第一句使角色在左键点击门后走到门旁边,第二句Game.ChangeScene("scenes\menu\menu.scene")使场景转换,目标场景由括号里的内容决定,你只需要改成其他文件夹里的场景文件就可以转换到别的场景了。$ _0 j: K  D" i; O. `% i# X& f0 L
See the WME demo project for a finished example.
9 O* T0 f, ~9 ^7 w! ~* c, W/ T0 R" @
保存并测试。
) w% d! i5 u8 [: [) m8 z$ f" j
! C  n& i8 O$ z6 X
9 f" \$ K; N! ]3 k, _3 o这样,你就完成了一个场景的搭建~Congratulations!% S6 N# d1 `4 E1 k

1 z# h% {+ J- t  v' _- a
! O2 ~! o* B- ]+ U! ~+ N! F/ A! ^1 M; T+ z
9 r6 \# M% }$ \: l/ U4 s

  ?4 n* C9 `" Q9 l* S7 c9 R5 m* G2 C' ?" j- J$ i! B
搭建场景是使用wme制作游戏耗费时间最多的内容之一,剩下的难点也只有对脚本的理解和运用了吧。9 H1 y7 D8 O, A2 h  b
这九个步骤大致按照帮助文档写的,感觉有很多表达不是很好的地方,也有一些问题没有搞明白- -希望大家一起讨论研究下。  C* V6 F1 k1 q& l' G+ {2 e, u: |  J

1 }. w+ a. f: I: o+ }4 t, y. a
& l! _/ w$ G2 k4 S; |0 n8 y( O6 J下一章是关于sprite的。. \& w8 Q/ ^0 ]5 D- c& {( `7 w
' l  Y9 Q$ D* h% a: _4 h4 v

9 ]1 w6 G! {9 m2 q% y这里要和各位讨论一个问题,就是脚本的教学,之后有很多内容涉及到脚本,帮助文档的也就是放一段代码在那,没有详细的说明。而帮助文档除了关于场景搭建的教学,另一大块内容就是脚本,不过关于脚本并没有什么教学,只是象说明书一样,其中大量的函数更是没办法一个个讲解。有编程基础的人一看就大概明白,不懂编程的人要从头学起。我的想法是没有基础的人找一门语言入门(python、lua,或者你感兴趣的语言),我只学过python,个人感觉找到一本好的教材后(我看的是简明python教程),只需要不长的时间就可以大致了解,只要能写个简单的小程序,知道编程的基本知识,理解wme的脚本就不是问题了。之后大家多交流,我会翻译一些网上的教程,或者做一些demo,希望论坛上有更多有能力的人参与到游戏制作中来~
作者: naptid    时间: 2010-9-18 17:39
本人几乎没学过编程,但看了python的源码,感觉这是门简单易懂的语言;
! w7 @! _% [- j0 ^看了楼主的WME学习笔记,感觉WME的脚本也不会难到哪儿去,但
+ Z' M# g# g, r) x; S看懂是一回事,写起脚本来又是另一回事了……
作者: clockworkman    时间: 2010-9-18 19:29
只要了解编程的基本知识, 浏览一下wme脚本提供一堆方法,初步的应用是很简单的。- _  ?2 P5 }$ Z6 v" \" @
之后就是不断练习、遇到问题Google之。
, |: ]9 @! E$ E+ O# r; k
2 h3 k1 a- O' P! m7 r6 ]不知道有没有必要把文档里脚本的内容拿出来讲- -




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