冒险解谜游戏中文网 ChinaAVG
标题:
wintermute学习笔记[3]--搭建场景步骤二:场景中的实体
[打印本页]
作者:
clockworkman
时间:
2010-9-17 11:44
标题:
wintermute学习笔记[3]--搭建场景步骤二:场景中的实体
使用PM打开scene_tut.wpr,在这一步我们将为场景添加更多的东西。
) `) v; D5 t% B' C% [
& K* h$ o7 G3 l O7 [2 p
场景中的图像元素,都叫做实体(entities),可以理解为布景时用到的道具。在我们的场景中,背景图片就是一个实体(node列表里background前面有个傻脸,就代表这是个实体)。在上一章测试时,你会发现你的角色总是挡着家具,而现实中人走到桌子后面时是会被桌子挡住的。如果你想让某个物体能够遮挡住角色,你必须把它单独的作为一个实体创建出来(所有角色能与之互动的东西都需要作为实体被创建)。(提一句,教程里桌子和椅子都是直接绘制到地板上的,但我感觉实际制作时应该把空地板作为背景,桌子和椅子另外做两张图片,然后把桌椅做两个实体添加到场景里,这样如果以后要调整位置方便得多)
% B3 R% }7 ^6 U- S+ B
) h' s W+ ~9 S1 D( I
现在我们将为场景添加一个实体“桌子”作为例子。
* z5 N) S) M) w: n
0 A) ^: n0 \1 A1 U F- b& m) j
首先我们需要桌子的图片,教程已经在demo里的tutorial\gfx文件夹为你准备好了,使用ProjectMan在文件树为Myscene这个文件夹导入图片desk.bmp(方法见步骤一)。
; K( R. u2 F) b# T
% | B2 B% z' H4 h* Q
在SceneEdit中打开我们的场景,在layer列表中选择main,点击Add entity(就是那个傻脸按钮)并选择Sprite entity。Sprite entity是拥有自己图像的实体,其他类型的实体会在以后讲解。
3 |* p; N% ?$ [# S
* |! Q5 S- i5 ] e% p0 l% @! Z
1 i8 `, ^7 s4 z) v. n
( d, X% E/ t# z3 ~2 ?
现在一个新实体就创建好了。默认名字为new entity,并且在预览窗口里也只是个红框。在node列表里选择这个实体,之后在左下角的信息栏可以修改有关它的信息。在信息栏中把名字(name)改为desk,标题(caption)也可以改为desk(这样在游戏中鼠标移到桌子上的话,就会提示这是个desk)。接下来点击sprite栏后面的按钮(sprite是wme中的基本图像元素),在弹出窗口中找到scene\Myscene文件夹下的的desk.bmp并载入。你会发现桌子在右边的预览窗口出现了。
- x! g% I2 i# b% \7 y3 _- p/ A
8 y+ j' Q1 L6 v# k
使用鼠标拖动图片与背景的桌子重合,或者你可以在左下角的信息栏的pos栏中输入正确坐标432,327。
* G- ^) B& P# @! v1 N/ S" _
. z, J9 }, ~% m# W
也可以使用键盘上的方向键来进行细微的调整,按住SHIFT再使用方向键移动的话每次移动5像素,空格键可以显示/隐藏当前所选实体(也可以由node列表里钩选小方框控制)
+ j2 r, n& U! v$ Y& B- c* T0 |6 L& ?- \
) z. u1 U9 w! q4 a. e6 r1 u; Q8 w7 B
接下来看一眼你的node列表,应该像图片中这样,如果不是的话,使用node列表上的上下箭头来调整顺序。
: ^ V; s" `: H
, N) W, i9 l' h% E: R! {! E
4 G5 U( `" U, }( S$ \
7 `7 F, ~9 o- F% ]: K# F8 ]
node列表的顺序是非常重要的!游戏引擎根据这个顺序来绘制场景中的东西,最上方的最先绘制。
: z! Q) S3 i8 }( U
目前的顺序应该是:
j' H5 h4 ?- \ K/ m1 v$ o$ U
background (entity)
/ M( `. _; S u1 i0 B
desk (entity)
7 h2 T; P$ Z9 r
floor (region)
" e, |3 a0 H$ h. u8 k% t
1 M0 H/ b$ i1 i$ v0 \1 W! e8 E
这样引擎在游戏运行时会这么工作:
9 c u5 i, p3 L9 G- j
先绘制背景图片
$ q) b: |& L* ^# d
再绘制桌子的的图片
- S }, T2 K2 u0 {
最后绘制在floor框范围内的角色(这样角色永远显示在桌子和背景之上)
4 S+ N3 }: @ p1 ]# ?& j/ ?# K8 f% ^
(在node列表中有entity和region两类东西,实体entity是实际绘制到场景中的,而区域region只代表一个范围,引擎会绘制处于这个范围中的角色)
1 ]! c2 X: J) D* d
! }6 S2 t: r. ]
如果你改变了顺序也就影响它们之间遮盖的效果,比如你把顺序改为:
! t/ O& k, p7 H R+ v( O
background (entity)
- q/ Y7 V( W) |7 e/ \7 d' K& y( \* w
floor (region)
/ L% Y9 y4 [* f- g# b
desk (entity)
5 H/ |, q; r. [% @0 u9 c
; k* K* L2 X i1 K
运行时引擎先绘制背景图片
! ?( E8 ]1 @( I- q" S$ O9 }) p N0 u
再绘制在floor框内的角色
8 K9 v8 V# V: g# U9 [2 E
最后绘制桌子(这样桌子就会遮挡住角色了)
/ E+ `! J, X; v! @$ `# u1 O2 I* \
$ i. i0 x5 _- D! U# \; ^
而至于如何做到角色在桌子后方时被遮挡,在前方时则挡住桌子。将在步骤三讲解。
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2