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

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

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

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

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

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

两章内容比较少,合在一起。) P( b' V! W) F8 k
, P+ N" a8 u! ]; W2 f
2 i3 @6 M2 Z7 ^
[层]- T: h1 k- M/ r5 a, }+ v

& P9 w& P+ g. t" X& z2 H. w这一章我们将实现多层卷轴(原文parallax scrolling貌似是平行卷轴,个人认为多层卷轴更贴切)的效果,就像你坐车时看窗外,近处的树和远处的山川向后退的速度是不一样的,wme可以通过添加层实现场景分不同部分卷动的效果。在步骤一中我们知道如果场景所用图片尺寸大于游戏窗口,场景就会在必要时卷动,并且场景越大,卷动速度越快,假设你有三个层,分别存放三张场景图片(比如天上的月亮、远处的高山、近处的公路),并且每张图片宽度都不一样,就会分别以不同的速度卷动,实现多层卷动的效果。# }3 ^8 ]( ^. H

" \" T% U! U, Y5 c5 m/ E每个场景可以拥有多个层,数量不限。& Y* P+ s, w2 N( _$ p) B$ p  x) Z. w) y
4 d, K! H! N% P. C( M+ f; F) m
在本章我们将为场景添加一个层作为窗外的天空。
7 _: Y* b7 F0 p3 Q+ q: E7 F6 O% \' I' X6 U" _' X; f9 I
天空的图片已经在 “data\tutorial\gfx”文件夹下准备好了,在PM 中为MyScene导入sky.bmp。
8 m7 K# @2 z4 V/ O# h
& A  q' D6 d. @# l0 r/ p在SceneEdit中打开MyScene.scene。" W2 v3 U" B- X' `8 W* A
 6 d2 a& R9 H- t+ k; F+ I& v: U2 g6 f
在Layer栏中点击Add layer按钮添加新的层。
! @/ n& p/ p+ J' {  [3 p  Y, N! X( y! c2 [/ o0 c1 \
! ?2 q' q8 F' ]9 |' D
3 X+ R4 e/ S2 h+ Y" C

' K- J8 F  E% u9 q+ B1 q% }/ kSceneEdit会弹出一个窗口填写层的信息(新版本里多出了一个close up选项,我没搞懂是干什么的- -大家研究研究),将名称改为sky,并将尺寸改为800,716。由于长度和窗口长度一样,这个层在水平方向不会卷动,而main层会卷动,就达到了我们想要的效果,而宽度为716,与main层相同,这样在纵方向上该层就会与main层同步卷动。1 [2 z8 ^. }, j9 m

6 Y8 ~" N  S% p0 a8 w7 S! W# m' i. B% q; u2 p5 Z+ P5 X

+ w: I5 h3 h" n  S! V3 C7 W点击OK。使用上下箭头将sky层移至main层上方,层的顺序影响绘制的顺序。5 y0 D) V' v+ C5 \" s
$ b) M- I* w: u) z; e# [) |
  r5 b' t8 R- ]( V: O% {
; }; u% q, S3 U6 }) Q; h$ ]0 A
接下来要做的就是添加一个实体来放置天空的图片,如下图选择Add sprite entity,将新建的实体改名为sky并将图像改为之前导入的sky.bmp。
- A6 K  g& a& d* a8 Y0 b6 }
" [- g. P# u' V& v6 [! \注意:新建的层可以添加实体,但只有main层可以添加区域。
3 h9 v; [6 R  W" g3 h/ y7 C$ P
& ^, {$ H1 e) g1 U# J2 R. b0 Y% v  q! P6 x4 d2 M

: Y, t% Z6 D* l  x0 i如下图移动到合适的位置。
- d* z& c0 A+ R5 A3 \
* N% I, W, W( ]8 }
" f$ q2 P8 @( ~$ t8 ]7 t' Y
* p3 @) j8 V! D! M4 }保存并测试一下效果。
" R# ?+ }$ p1 q8 i. p+ E- c  L# @- H; D. W' f; N& \" f
[场景设置 ]
9 m7 J0 n! ^& P3 f+ d; h+ p( A2 [
引擎可以自动保存场景中物体的状态,并在下次角色来访时还原,还可以使场景中的对象记住它们所使用的sprite(你可以使用脚本改变)。
( U  d( ?8 D) @8 }: B在SceneEdit左边工具栏中找到Properties选项卡,下图中红框勾选的两个选项可以决定是否开启场景自动保存的功能。2 _- L' H% C9 _, d6 n7 I4 L* v

, G5 W# f4 y! s$ ]$ s8 a9 q/ }+ x6 o) G

7 R6 I; q! m9 Q) x9 L# \* P
2 h% w% V9 d* t1 b3 G# q- ], V0 d注意:保存场景的功能与你场景中对象的名称有关系,所以你的场景中不应该有重名的对象,否则可能出错。+ y. A1 J% L) b8 `
7 n; [8 K3 o; D  i: e7 j
[场景转换]
- ?7 i# D& m* W% E4 }+ b; I4 Y# z( z3 `' T- s. R$ ^
你的游戏一般不会只有一个场景,使用脚本可以把各个场景连接在一起。我们在步骤7种已经把门做成了一个可以互动的区域实体,按之前所教的,给门添加一个脚本door.script并编辑。2 U# U1 z) `6 k) L+ E# K0 i
! x( i. H% l0 }2 [  B# K7 P% E) l

, R# s8 i9 A, s 
0 }; t: N% z* B) N% Y! q我们只需要门在左键点击后能进入下个场景,所以只需要有以下的内容( d( @( x6 m( D0 G; C

4 d( c; V0 M7 m
- H6 A. ^, F) r1 ?) I
#include "scripts\base.inc"
[/table]
"LeftClick"
{
actor.GoToObject(this);
Game.ChangeScene("scenes\menu\menu.scene");
[table=100%,#66ffcc]}

0 O+ t( ?5 Y7 H6 @. w$ C& B0 i" M9 \; d6 ^# Z$ Z3 \2 p# f7 x
大括号里一共有两句命令,第一句使角色在左键点击门后走到门旁边,第二句Game.ChangeScene("scenes\menu\menu.scene")使场景转换,目标场景由括号里的内容决定,你只需要改成其他文件夹里的场景文件就可以转换到别的场景了。6 E6 o8 W8 C: `1 ]& f. v
See the WME demo project for a finished example.
7 i8 g5 F( M) |( N" C' a2 e3 {4 N+ k: `& K( K4 m; Q
保存并测试。  s5 ^3 [. ]! r9 _! S% t; q& [
5 A  Y5 P/ Y- ?# o: z2 g8 f  t
. ]" l$ U# z! y; d/ `& g8 a
这样,你就完成了一个场景的搭建~Congratulations!
& f5 l3 O) y, j5 |3 d6 [$ P( R' n; o% L

3 s; \7 E/ ?5 W4 c; Y! g% t) W: E& m0 |4 a- N7 E2 Z: k

0 `: ~( K. I6 u* \+ N, S1 H. ]% X2 H4 A. Q) e/ m; n  Z8 w* E. P

! G5 W& J" l6 V" q/ w* {0 o搭建场景是使用wme制作游戏耗费时间最多的内容之一,剩下的难点也只有对脚本的理解和运用了吧。  ^& N0 c5 q* b& g' b( ^# I: c
这九个步骤大致按照帮助文档写的,感觉有很多表达不是很好的地方,也有一些问题没有搞明白- -希望大家一起讨论研究下。
8 q% m- y  G7 e# U  @. H1 Y- J( w3 X
9 w, \& Q9 e% i6 w, J$ \
下一章是关于sprite的。
! E/ e( l( l1 W
4 K% D' A7 p7 j) j& `& v4 |
/ A5 B; u+ ^" K" y. y; z4 G这里要和各位讨论一个问题,就是脚本的教学,之后有很多内容涉及到脚本,帮助文档的也就是放一段代码在那,没有详细的说明。而帮助文档除了关于场景搭建的教学,另一大块内容就是脚本,不过关于脚本并没有什么教学,只是象说明书一样,其中大量的函数更是没办法一个个讲解。有编程基础的人一看就大概明白,不懂编程的人要从头学起。我的想法是没有基础的人找一门语言入门(python、lua,或者你感兴趣的语言),我只学过python,个人感觉找到一本好的教材后(我看的是简明python教程),只需要不长的时间就可以大致了解,只要能写个简单的小程序,知道编程的基本知识,理解wme的脚本就不是问题了。之后大家多交流,我会翻译一些网上的教程,或者做一些demo,希望论坛上有更多有能力的人参与到游戏制作中来~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2010-9-18 17:39 | 只看该作者
本人几乎没学过编程,但看了python的源码,感觉这是门简单易懂的语言;
3 x5 ~# v/ K- B6 w2 x# h, F6 q看了楼主的WME学习笔记,感觉WME的脚本也不会难到哪儿去,但
* {. y2 U; q' _& x: g5 p看懂是一回事,写起脚本来又是另一回事了……
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2010-9-18 19:29 | 只看该作者
只要了解编程的基本知识, 浏览一下wme脚本提供一堆方法,初步的应用是很简单的。
% P: V5 y% ?) b5 u5 u之后就是不断练习、遇到问题Google之。4 B- t, n" f* K' `
5 z) i4 @3 ~& r5 g' J
不知道有没有必要把文档里脚本的内容拿出来讲- -
回复 支持 反对

使用道具 举报

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

本版积分规则

冒险解谜游戏中文网 ChinaAVG

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

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

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

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