魔兽地图制作教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
魔兽地图制作教程星期三20:27 区域,对话,变量
基本的启动什么的就不说了,先从地区开始。既然是防守地图,就需要确定两方面的区域,进攻,以及防守。运行WE以后,在菜单点击层面(L)选择设定区域(R)打开区域面版。
在截图1中,我并没有使用地型以及装饰物,包括以后的一些演示,力求简单易懂:
一共划了九个区域,其中上面六个小的点表示刷怪的位置,而下面的大一些的区域就是我方阵地,OK,基本区域设置完成,下面左右两个区域表示选择英雄的位置。
为了以后查找方便,我将各个区域命名,因为不能采用中文名字,所以我只好边查字典(传说中的金山词霸2007)边用上相应的英文名。我方阵地=Home 进攻的六个区域叫attack 001 - attack 006 选择英雄的区域叫hero 001 和hero 002。
然后进行基础内容设置,比如将使用的单位,英雄,变量,玩家数等等。因为是简单化,所以这次不进行单位的修改,而直接采用原始设定的单位。
先说英雄,我准备采用三种方式来选择英雄,1、随机选择2、双击选择3、小精灵选择。
不论使用哪一种方式,我们都会先使用到对话来选择我们的英雄创造方式,所以就先做一个对话。
按下F4,运行触发事件编辑器,删掉对战初始化的触发,然后按CTRL+T或如截图2所示点击中间白色的图标,创建新的触发器。
在新的触发器面版里点右键,选新事件开端,选择事件Map initialization(注:地图初始化,是在地图开始运行以后就会执行这个触发器,有很多的触发器直接使用这个事件会运行不了,但如果你在触发器动作的第一行加入wait-等待语句的话,那就可以运行了)
因为是直接运行的,所以条件就不需要了,为空,然接下来是动作,就如我前面所说,如果用地图初始化做触发事件的话,除了变量赋值等触发以外,很多触发器不会执行动作,所以我在第一行添加了wait 2.00 等待2秒,然后写入触发动作。
某人乱入:没有编辑变量!!!!!!!!!!!!!!!!!
对的对的~对话的使用必须要有变量,因为对话点击事件只能选择变量进行的,所以如果没有设定对话变量,那么将无法开启对话事件!如图3所示:
所以我们先去设定变量,点击Ctrl+B,或者点图2中间那个X的图标进入变量编辑器,如图4所示:
我设定了对话变量以及对话按钮变量组,之所以不同是因为对话只是要判断这个对话是否被点击,而因为按钮是有多个选择的,所以需要多个按钮的判断,而且变量组会方便使用。OK,变量设定完成,我们继续刚才的对话制作。
在动作里选择对话- Change Title ,改变对话标题,这里的内容就显示在对话按钮的上方,提示你需要做出选择。然后再写入动作对话- Create a dialog button ,创建对话按钮,这里提醒的是,每创建一个按钮,必须要加入一个变量赋值语句Set dialog_button[1] = (Last created dialog Button) ,其中
dialog_button[1]是对话按钮变量,[ ]中的1表示这个对话按钮变量组代号1的变量,可以按你的对话按钮数量而改变。对后建立动作对话- 显示dialog for 玩家 1 (红色),那这个触发基本上完成,如图5所示(包括运行后游戏中显示的样子):
接下来先讲如何做选择英雄的触发……然后再接着讲对话框。
选择英雄
我们先来说说小精灵选择英雄,这个触发的思路其实就是单位进入区域,然后判断进入该区域的是不是我们用来选择英雄的单位,再执行更改单位所属或创建新的单位给触发单位所属。在这里需要说明的是,为了可以更加方便的控制英雄,我们需要使用单位变量给他们进行赋值,而且因为需要做联机,因此我们设定一个单位变量组。如图6所示:
然后因为是使用单位进入区域的触发,所以增加了几个区域在所选的英雄前面,英雄所属为中立无敌意,下面那个区域为创造小精灵的位置,图7所示:
然后我们写触发,事件是Unit - Unit Enters Region,单位进入区域,因为有多个英雄可以选择,所以我们可以在一个触发器里写多个事件,也可以将每一个事件写成一个触发器。然后环境(条件)就是需要判断该单位是不是小精灵,判断的是单位类型,所以我们选择(Unit-type of (Triggering unit)) 等于小精灵,这样其它单位进入区域就不会触发动作。再接着我们就进行选择的动作,一般来说,我们都不希望可以重复选择同一个英雄,所以可以采用几种方式,常用的有:1、关闭触发器(如果每个选择英雄的触发器是单独的,那么关闭触发器就意味着将不再能选择这个英雄,即使达到条件也不行),2、给选过的单位做备注。
先说说1的做法,如果我们一开始就创造了多个触发器,我们可以这样写触发:
事件:单位- Unit Enters Region //一个单位进入区域
条件:(Unit-type of (Triggering unit)) 等于小精灵//触发单位的类型是小精灵
动作:单位- Change ownership of 圣骑士0001 <情报> to (Owner of (Triggering unit)) and 改变颜色//改变指定单位“圣骑士001”所属为触发单位所属玩家
Set hero[(Player number of (Owner of (Triggering unit)))] = (Ownership-changed unit)
//设定变量hero[玩家的索引号]=改变所有权的单位
单位- Kill (Triggering unit)
//杀死触发单位-这个不需要解释了……
触发器- Turn off (This trigger)
//关闭这个触发器
这里需要说明的是,如果英雄选择的地方是没有障碍的,所以可以直接改变指定单位给触发单位所属玩家来控制,如果是锁定区域的话,那可以移动该单位到指定位置或者创造一个同类型的单位给触发单位所属玩家在指定的位置(一般是玩家的初始地点),而单位变量的赋值是为了方便以后操作;如果是创造单位的话,该语句也需要更改:
单位- Create 1 (Unit-type of 圣骑士0001 <情报>) for (Owner of (Triggering unit)) at ((Owner of (Triggering unit)) start location) facing 默认的建筑朝向degrees
//创造一个单位类型是“圣骑士0001”的单位给触发单位所属在玩家的初始点
Set hero[(Player number of (Owner of (Triggering unit)))] = (Last created unit)
//设定变量hero[玩家的索引号]=最后创造的单位
然后我们说说双击选英雄,这个方式最重要的一点,是做备注。双击选择英雄的原理很简单,只要判断该单位在一定时间内,比如0.2秒,是否被连续点击,那么第一次的点击就是做为第二次点击的判断依据,也就是说,第一次需要做一个备注。如图:
这里需要说明的是,采用玩家事件判断可以用到触发玩家,如果是用单位被选择事件判断的话,触发玩家就是被选择单位所属玩家而不是点击这个单位的玩家;另外事件是并行的,也就是说可以多个事件来判断同一个触发器却不相互影响。我这次做备注的方式是给单位添加自定义数,如果这个单位被点击了,那么这个单位的自定义数就为玩家号,如果在0.2以内再次被点击,而且是同一个玩家点击的话(判断玩