冒险解谜游戏中文网 ChinaAVG

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

作者: clockworkman    时间: 2010-9-18 16:32
标题: wintermute学习笔记[9]--搭建场景步骤八、九:层、场景设置、场景转换
两章内容比较少,合在一起。
) G2 p2 I2 U# c/ P. ?
$ x2 G% f8 Q" |6 B) x: s0 H& R' R8 P
[层]' f, ^# ]1 d# }6 }5 k+ c" p  R+ Y  G9 J# g

- f2 X! x2 b6 Q这一章我们将实现多层卷轴(原文parallax scrolling貌似是平行卷轴,个人认为多层卷轴更贴切)的效果,就像你坐车时看窗外,近处的树和远处的山川向后退的速度是不一样的,wme可以通过添加层实现场景分不同部分卷动的效果。在步骤一中我们知道如果场景所用图片尺寸大于游戏窗口,场景就会在必要时卷动,并且场景越大,卷动速度越快,假设你有三个层,分别存放三张场景图片(比如天上的月亮、远处的高山、近处的公路),并且每张图片宽度都不一样,就会分别以不同的速度卷动,实现多层卷动的效果。
' M0 O' P6 d9 D7 W7 E3 q
, ^6 Y4 a( i1 `5 \) h每个场景可以拥有多个层,数量不限。3 ~9 ^" e! p9 y; G) l& W
& U, B3 X2 C7 f) s5 a. O" ]
在本章我们将为场景添加一个层作为窗外的天空。
8 d3 p0 E9 [8 n. A+ Z/ J1 r' Z; e# z, C+ e. s5 y
天空的图片已经在 “data\tutorial\gfx”文件夹下准备好了,在PM 中为MyScene导入sky.bmp。
  I& i/ n) K/ s8 ^0 G& l9 n
3 [% P/ p+ C. q9 O' Y) F在SceneEdit中打开MyScene.scene。
2 n, s! b* M1 k/ _; Z* s 
, X; t; d, Q8 i. z4 K8 A; Y在Layer栏中点击Add layer按钮添加新的层。
6 D  O2 c7 V3 s; `& B! u3 Z+ n* Z4 p/ H
0 R7 Z- T) V3 m9 W, o( }  d, U' M6 h& Z5 }
# D1 z! m5 m0 i

! y0 [! B9 U/ _3 f- k4 ^% xSceneEdit会弹出一个窗口填写层的信息(新版本里多出了一个close up选项,我没搞懂是干什么的- -大家研究研究),将名称改为sky,并将尺寸改为800,716。由于长度和窗口长度一样,这个层在水平方向不会卷动,而main层会卷动,就达到了我们想要的效果,而宽度为716,与main层相同,这样在纵方向上该层就会与main层同步卷动。
: Q7 I3 d! _9 R! N& b! J  v; o/ c. [  l, Q6 e

7 X1 a* j5 b2 y) F3 K. b
: d* ^# x0 t, D: O9 ~1 B点击OK。使用上下箭头将sky层移至main层上方,层的顺序影响绘制的顺序。
( H/ d5 k; l( v( |9 W0 E1 X. S; a* d8 c& V( z- y
1 N( R7 L2 w4 d: P" E8 ^  K+ f
7 x$ v; {* u8 b& Q0 {3 \! T8 i( Q
接下来要做的就是添加一个实体来放置天空的图片,如下图选择Add sprite entity,将新建的实体改名为sky并将图像改为之前导入的sky.bmp。" F0 U- F8 b0 V" J7 q  \

& a+ B' O2 j" ^  u8 p注意:新建的层可以添加实体,但只有main层可以添加区域。
' [( X7 H+ H0 K; V% i
) o  C1 N8 h( R' s6 f; P  Q1 r! p8 q3 D- G
' S+ ]8 X. V" {* Y
如下图移动到合适的位置。
7 ]# T+ j$ l" O* d$ R# X9 N1 t7 r. D7 C( o
! y4 ~0 H  L. v, U7 n9 b" Z* \
* A* a6 p' {6 X5 ^9 C& D/ ~9 [2 X
保存并测试一下效果。
" E5 D; L1 t- @0 J+ R  ^  B% x5 S7 o
[场景设置 ]
0 l' s# u! E% j( e8 N1 G" F( m
" H  S, ~4 q! `( F9 }, t引擎可以自动保存场景中物体的状态,并在下次角色来访时还原,还可以使场景中的对象记住它们所使用的sprite(你可以使用脚本改变)。8 Q/ D+ ~1 h9 A
在SceneEdit左边工具栏中找到Properties选项卡,下图中红框勾选的两个选项可以决定是否开启场景自动保存的功能。' j& q9 ^) L1 m8 W/ R
' K, C% _& y# ?" y- B' @

8 H0 o% S4 \+ X
$ Q& @- \+ J0 u5 L8 T% h% M& w0 C/ ?* O/ W3 w
注意:保存场景的功能与你场景中对象的名称有关系,所以你的场景中不应该有重名的对象,否则可能出错。
; E6 H0 C; T; ^7 R: K/ [. N9 [ + g& f4 E% v2 s9 V$ J' ^7 Z; ^
[场景转换]9 L+ B" t4 Q6 y' f! I5 r- H

# S; V0 G" l7 Y0 K: ^8 L3 g, z你的游戏一般不会只有一个场景,使用脚本可以把各个场景连接在一起。我们在步骤7种已经把门做成了一个可以互动的区域实体,按之前所教的,给门添加一个脚本door.script并编辑。2 B' V  {# ?( V0 C

6 D- H, {: t$ w* @7 `/ h5 K1 y4 R+ c& S
 0 f% Z; z/ ~- I2 F: ~/ S$ b
我们只需要门在左键点击后能进入下个场景,所以只需要有以下的内容% a6 I; e+ D8 R9 N, c  f
& ~' g; x/ V3 }+ N

6 M  M$ ~" l4 Y  n- R  r7 ?
#include "scripts\base.inc"
[/table]
"LeftClick"
{
actor.GoToObject(this);
Game.ChangeScene("scenes\menu\menu.scene");
[table=100%,#66ffcc]}

  W8 }; c# q9 ~: o2 O# Q4 h8 a6 l/ n) F4 `& a: C- x
大括号里一共有两句命令,第一句使角色在左键点击门后走到门旁边,第二句Game.ChangeScene("scenes\menu\menu.scene")使场景转换,目标场景由括号里的内容决定,你只需要改成其他文件夹里的场景文件就可以转换到别的场景了。
  j& p, F& w/ K& y& oSee the WME demo project for a finished example.
4 B1 k* j2 e0 y0 Y5 j; ]& q
' f7 X6 V8 z8 l  F5 {4 V保存并测试。; L1 F( g& |6 l
7 }3 m* `" x: L
* [! @* B! r3 v1 d
这样,你就完成了一个场景的搭建~Congratulations!; l7 g: [7 H, t! k/ K/ T

/ l, K+ o: D! @3 k9 [' ]* w2 D$ ?: h. h( g) ^

- @# R* ]: d+ U  T9 v% W) [( J) D( s  c8 A2 x! Z' e. Y6 Y
1 ?  e! n+ C# X7 R8 y) A2 Y
) B. X: W0 M9 _4 A) M
搭建场景是使用wme制作游戏耗费时间最多的内容之一,剩下的难点也只有对脚本的理解和运用了吧。7 Y/ W" b% ~1 [" o) V
这九个步骤大致按照帮助文档写的,感觉有很多表达不是很好的地方,也有一些问题没有搞明白- -希望大家一起讨论研究下。4 f2 F" F( m& {

' T. N! U. h) `; E" V! l4 [& V
: a5 n- |  t, K1 K下一章是关于sprite的。
% f0 e. G# f; j8 I. P8 F- f1 b/ W# Z% N0 R5 i3 ]% N& |

; b$ @4 h. }0 X5 Q3 W+ n这里要和各位讨论一个问题,就是脚本的教学,之后有很多内容涉及到脚本,帮助文档的也就是放一段代码在那,没有详细的说明。而帮助文档除了关于场景搭建的教学,另一大块内容就是脚本,不过关于脚本并没有什么教学,只是象说明书一样,其中大量的函数更是没办法一个个讲解。有编程基础的人一看就大概明白,不懂编程的人要从头学起。我的想法是没有基础的人找一门语言入门(python、lua,或者你感兴趣的语言),我只学过python,个人感觉找到一本好的教材后(我看的是简明python教程),只需要不长的时间就可以大致了解,只要能写个简单的小程序,知道编程的基本知识,理解wme的脚本就不是问题了。之后大家多交流,我会翻译一些网上的教程,或者做一些demo,希望论坛上有更多有能力的人参与到游戏制作中来~
作者: naptid    时间: 2010-9-18 17:39
本人几乎没学过编程,但看了python的源码,感觉这是门简单易懂的语言;  Q+ H+ v* k/ r; ~# f7 k. |
看了楼主的WME学习笔记,感觉WME的脚本也不会难到哪儿去,但
. _8 e3 l( m1 z2 A7 ?1 A6 a看懂是一回事,写起脚本来又是另一回事了……
作者: clockworkman    时间: 2010-9-18 19:29
只要了解编程的基本知识, 浏览一下wme脚本提供一堆方法,初步的应用是很简单的。( ?9 [1 ~$ U( n' t* N
之后就是不断练习、遇到问题Google之。
8 p* f, B' u4 ?) G% U4 ]9 Q! Z5 u& a; |! P
不知道有没有必要把文档里脚本的内容拿出来讲- -




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