Impact 主题(二):Weltmeister

本文介绍如何使用Weltmeister编辑游戏关卡,包括启动编辑器、基本控制、图层管理、实体操作等内容。适用于Impact游戏引擎用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动 Weltmeister
如果您的 Web 服务器配置正确,你应该能够将浏览器指向  http ://localhost/impact/weltmeister.html,/impact/ 当然是你解压 Impact 的目录。 Kilofox.Net

当 Weltmeister 载入完成,一个新的、空的关卡就呈现了 。如果 它没有加载,请检查 JavaScript 错误控制台,并确保您的服务器上的 PHP 工作正常。

控制
控制鼠标右键,或按住 Ctrl 键拖拽周围视图。
鼠标左键绘制当前选定的”块“,或者,当实体层被选中时,选择光标下的实体。
空格键用来切换”块“的选择,或切换实体选择菜单,取决于哪个层被激活。
Backspace 键或 Del 键用来删除当前选定的实体。C 键用来 复制 实体。
Z 键和 Y 键分别为”撤消“和”重做“。 Kilofox.Net
按 G 键切换 BackgroundMaps 网格。
按住 Shift 键和鼠标左键选择地图的一个区域,或”块“选择屏幕由于你的新”刷子“。——Hold down shift and the left mouse button to select an area of your map or tile selection screen as your new "brush"
你可以在文件 lib/weltmeister/config.js 中更改这些控制。

使用层 weltmeister-tutorial.png
你会看到,即使是在​​您的空地图上,也出现了一个层——实体层。你的关卡的所有实体都放在这里。这一层是永远存在的,无法删除。

当你点击“+”图标时,一个新层就创建了,并且是被选中的。您可以通过点击菜单上的层,或按键盘上相应的数字键,来选择层。 Kilofox.Net

点击层名前面的复选框,或按下 Shift 键与相应的数字键,可以切换层的可见性。这个可见性只在编辑器内有效,在你的游戏中没有任何效果(如果您使用默认的 .loadLevel() 方法)。

您将看到被选中层的 Layer Settings 菜单(如果它不是实体层)。您可以在这儿更改这个层的 Name 和 Tileset,以及 Tilesize 和该层中”块“的宽度和高度。

改变层的 Dimensions 或 Tilesize 时要小心——没有”撤消“按钮!

层的 Distance 决定了该层相对于游戏屏幕滚动的快慢 。如果 是 1 个距离,则层与屏幕同步滚动 。如果 是 2 个距离,则地图的滚动速度减半,使得背景看上去好像很远。这只在次要的背景层有用。主层的话,应该始终为 1 。 Kilofox.Net

Repeat 复选框规定了该层是否以重复的“背景模式”绘制。同样,这在次要的背景层有用。

如果选中了 Link with Collision,则对该层的所有操作,都将应用到碰撞层。这就意味着,你在该层上绘制的每一个“块”,同样会应用在碰撞层(tile #1)。你每删除一个“块”,同样会从碰撞层删除。

您可以像创建其他层一样创建一个碰撞层,然后给它命名为 collision 即可。它会自动变成这个关卡的碰撞层。这也意味着,这一层不会在你的游戏中画出来。

绘图
当背景层或碰撞层被选中时,您可以按空格键打开块选择菜单。左键单击选择一个"块"。选择一个“块”后,简单的左键单击来放置它。按住 Shift 键,并单击+拖拽,可一次选择多个“块”。

如果你想从该层删除一些“块”,则按空格键,然后在块选择菜单以外的任何地方单击。这将选中“空块”。再次左键单击你想要放置的地方。 Kilofox.Net

所有的“块”绘图操作,都可以使用 Z 键或 Y 键进行“撤消”或“重做”。

载入您的实体
在实体层被选中后,您可以通过按空格键放置一个实体,并从菜单中选择它。

这个菜单将会列出在 lib/game/entities/ 目录(这个路径可以在 lib/weltmeister/config.js 中更改)下找到的所有实体。实体名必须按规定的格式书写,实体才能被 Weltmeister 载入。 Kilofox.Net

例如,文件 lib/game/entities/player.js 中必须定义一个名为 EntityPlayer 的 ig.Entity 子类。文件名中的连接线”-“是实体名中大写字母的标志。例如,文件 enemy-blob.js 中定义的实体名必须为 EntityEnemyBlob 。

如果文件名和实体名不匹配,Weltmeister 会在启动时告诉你的。

实体可以有一些仅在 Weltmeister 使用的特殊属性。这些属性都以 _wm 开头。查看  ig.Entity  的详细信息。

操作实体
实体可以通过左键拖拽控制他们 。如果 实体是可伸缩的(._wmScalable = true),你可以通过拖拽边缘改变它的大小。

实体可以用 Backspace 键或 Del 键删除。您可以按下 C 键 复制 实体。注意,这只是创建一个相同类型的新实体,它不会 复制 原始实体的所有属性。 Kilofox.Net

当一个实体被选中时,你会在右侧看到 Entity Settings 菜单。某些设置,如 x、y、size.x 和 size.y ,当您拖动实体或改变其大小时,将会自动更新。

如果你点击一个属性,“键”(name)以及它的”值“就会出现在下方的输入框内 。如果 在“Value”框中按回车,这个值就被写入该实体。 Kilofox.Net

您可以输入一个新的”键“和”值“,来给实体添加任意数量的设置。例如,如果您想给实体设置一个名称属性“myName”,只需输入“name”作为 Key,“myName”作为 Value,然后按 Enter 键。您可以通过指定一个空字符串作为”值“,来删除属性。

您可以把两个实体连接起来,给其中一个实体一个”名字“,给另一个实体一个同名"目标"。例如:
EntityDoor
  key: name   
value: door1  

EntityTrigger
  key: target.1
value: door1

一个实体可以有多个目标,所以有 target.1、target.2 等等这样的目标编号 。如果 两个实体连接起来了,将在它们之间画一条线。

weltmeister-tutorial-entities.png 

然后,您可以这样使用这个 trigger 实体的目标对象: Kilofox.Net
  1. EntityTrigger = ig.Entity.extend({
  2.     size: {x: 16, y: 16},
  3.     target: {},
  4.     checkAgainst: ig.Entity.TYPE.BOTH,
  5.     
  6.     _wmScalable: true,
  7.     _wmDrawBox: true,
  8.     _wmBoxColor: 'rgba(196, 255, 0, 0.7)',
  9.     
  10.     check: function( other ) {
  11.         // Iterate over all targets
  12.         for( var t in this.target ) {
  13.             var ent = ig.game.getEntityByName( this.target[t] );
  14.                 
  15.             // Check if we got a "door" entity with the given name
  16.             if( ent && ent instanceof EntityDoor ) {
  17.                 ent.open();
  18.             }
  19.         }
  20.     }
  21. });
复制代码
所有的 Entity Settings 都将被直接写入实体的属性,所以一定要小心,不要覆盖你需要的属性,比如 draw 或 up date  函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值