首页 魔兽地图制作教程1

魔兽地图制作教程1

举报
开通vip

魔兽地图制作教程1魔兽地图制作教程 星期三 20:27 区域,对话,变量    基本的启动什么的就不说了,先从地区开始。既然是防守地图,就需要确定两方面的区域,进攻,以及防守。运行WE以后,在菜单点击层面(L)选择设定区域(R)打开区域面版。    在截图1中,我并没有使用地型以及装饰物,包括以后的一些演示,力求简单易懂:      一共划了九个区域,其中上面六个小的点表示刷怪的位置,而下面的大一些的区域就是我方阵地,OK,基本区域设置完成,下面左右两个区域表示选择英雄的位置。    为了以后查找方便,我将各个区域命名,因为不...

魔兽地图制作教程1
魔兽地图制作教程 星期三 20:27 区域,对话,变量    基本的启动什么的就不说了,先从地区开始。既然是防守地图,就需要确定两方面的区域,进攻,以及防守。运行WE以后,在菜单点击层面(L)选择设定区域(R)打开区域面版。    在截图1中,我并没有使用地型以及装饰物,包括以后的一些演示,力求简单易懂:      一共划了九个区域,其中上面六个小的点 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示刷怪的位置,而下面的大一些的区域就是我方阵地,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以内再次被点击,而且是同一个玩家点击的话(判断玩家号),就会执行创造的触发,否则,该单位将恢复到其它自定义数,被执行以后关闭该触发器。    PS:Player Number 玩家号,就是每个玩家默认的值,玩家1的号为1,玩家2的号为2,类推。    最后说随机选英雄,所谓随机选择,其实就是在按排好的一些单位里进行挑选并给予单位,既然是按排好的,所以我们就需要定义单位类型,也就是说,我们需要使用单位类型变量来存储不同的单位,因为使用随机,所以要用单位组来做,如图所示:      这里,还有包括以后刷怪用到的小兵都会采用单位类型变量进行定义,所以我们单独设置一个地图初始化的触发器用来赋值。      然后我们来看下面的截图,这个触发用到了前面提过的对话,而我们前面设定的第三个对话框提示是“随机选择英雄”,所以事件是对话变量dialog被点击,条件就是点击的第三个对话框,然后执行动作。这里加入了一个新的变量,numeral是一个数值变量,用来保存随机数的,采用单位类型的变量是否为空来判断,如果不是空的话,就创造这个类型的单位,并将这个变量赋值为空,这样就不会被再次选择;但有一点,就是可选择的单位数要多于在线玩家数,否则会出错。 特别感谢furrydodo朋友的提醒,经过修正,现将该触发分成两部分,一部分是控制次数,一部分是控制选择,控制方面采用等待1秒的方式来避免BUG产生:       对话    OK,前面已经设定好单位选择的触发了,我们接着讲对话。对话按钮一共有三个,随机选择英雄的触发已应用,还有双击选择英雄和精灵选择英雄,触发器都已经完成,接下来的工作是做一个桥接,另外设定两个触发器来控制已经完成的触发,如图12:      可以看到,有三个触发器是开启状态,分别对应三个不同的英雄选择动作,其它具体的触发器是关闭状态,只有在运行指定触发器以后,才会打开。比如你选择了双击选英雄,哪怕你有小精灵进入那些选择英雄的区域也一样不会触发动作,另外,这里用了两个新的动作:Camera -镜头,Visibility -可见度。    可见 - Create an initially 充许 visibility modifier for (Picked player) emitting 可见 across hero 001 <情报>    //设定区域 hero 001 充许可见(也就是去除黑影和迷雾)给所有选取的玩家    镜头 - Set the camera bounds for (Picked player) to hero 001 <情报> //设定镜头锁定在区域 hero 001,所有玩家的视线将被锁定在这个区域,包括单位活动。    另外,这里需要说明的是,双击英雄部分不需要创造小精灵的触发,还有如果你希望你选择好英雄以后,视线自动移动到英雄身上,请在选择的触发后面添加另外的触发动作:   镜头 - Set the camera bounds for 玩家 1 (红色) to (Entire map)    //设定镜头锁定全部区域(也可以锁定游戏区域)    镜头 - Pan camera for (Owner of (Triggering unit)) to (Position of hero[(Player number of (Triggering player))]) over 1.00 seconds    //移动触发单位所属的玩家的镜头到刚刚创造的单位位置    选择 - Select hero[(Player number of (Owner of (Triggering unit)))]    //选择玩家刚才创造的英雄 如下图所示:        迷之声:有问题!将设定好的东东放到每个触发器,发现如果双击选择英雄直接调用小精灵选择的镜头会出错。原因是这样的:小精灵选择的触发单位小精灵是玩家所属,而双击选择的触发单位是中立的,但另一方面,双击选择的触发玩家是点击单位的玩家,所以,我们需要将原来的单位所属玩家修改成触发玩家。另外,因为双击选择没有小精灵的限制(小精灵死亡将不会再运行触发动作,除非还有其它小精灵,一般不会再存在了),所以尽管限制每个英雄只能选一个,但一个玩家却可以选不同类型的多个英雄,因此,在前面的判断语句中利用变量做了一个判断,如果变量为空,才可以运行触发,如图所示:        这次是完全正常了,另外第三个触发器“随机选择英雄”就需要玩家索引来定义,因为没有触发单位。    刷兵,计时器    不知道大家有没有玩过“魔兽世界”,70级副本有一个叫“黑暗之门”,就是守护麦迪文直到打开黑暗之门,很经典的防守副本,我也准备做一个类似的防守地图,当然,不要去指望会很好玩……主要还是为了演示。    黑暗之门的刷兵方式是这样的:随机在N个区域的其中一个产生传送门,然后会有一个传送门守卫出来在门的旁边,传送门一定时间会召唤一些小怪前往麦迪文的位置,杀死守卫就会关闭传送门,然后一定时间内会在另一个地方产生传送门,每六批一个BOSS,一共十八批。    这里我们需要有一些地图设定元素:小兵的类型(普通兵九种,随着进度而变化-出现更高级的兵种),守护者3种(每五批切换一名,第六批为BOSS),BOSS也是3种,还有我们需要设定计时器。使用了一些变量,如下:    单位类型变量组Foot[9] =保存小兵类型    单位类型变量组Boss[6] =保存守护者和BOSS    计时器变量Calculagraph =传送门计时器    计时器窗品变量Calculagraph_windows =传送门计时器窗口    地区变量组attack_area[6] = 六个出现传送门的地区    数值变量组attack_numerical[1] = 用于 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 随机地区变量数    attack_mumerical[2] = 用于记录传送门现有数量    attack_mumerical[3] = 用于记录传送门总数量    单位变量组Carrydoor[6] = 保存传送门    计时器变量hero_Calculagraph =英雄复活计时器    计时器窗口变量组 hero_Calculagraph_windows[5] = 英雄复活计时器窗口    我们先来定义单位类型变量,这里有个很有趣的设定:        所有小兵全部取决于同等级的随机野生单位,大家都知道野生单位是固定等级分类的,这样我们每次在玩图的时候没有改变难度的情况下却可以每次都可能遇到不同的怪。BOSS采用各个英雄,必要的话会在触发中添加一些属性,当然在具体做图的时候可以事先设定好各个怪物的属性;还有六个传送门出现的区域也保存在变量中了。    接着我们说刷兵,刷兵一般是两个部分组成,一个是创造,一个是进攻。    单位 - Create (1 x (Number of players)) Foot[1] for 玩家 12 (棕色) at (Position of Carrydoor[(Integer A)]) facing 默认的建筑朝向 degrees    //创造1*玩家数的单位类型为单位变量Foot[1]的单位给玩家12,并出现在单位变量Carrydoor(循环数A)的位置,面朝默认建筑方向。    可以看到这里用到了一个乘法语句,这个是整数的一个运算方式:        其实我们以后也会经常用到这种方式做一些精确的计算,当然,这个只是最简单的四则运算,还有其他复杂的算法,另外如果是字符串变量的话,同样可以用这个进行串连,比如显示出英雄的名字+英雄的等级。    还有用到变量Foot[1],在前面已经介绍过,给单位变量Foot[1]进行赋值为随机的等级1的野生单位,所以这个变量可能是任何一种等级1的野生单位,当然在具体做图的时候最好可以具体定义自己设定的单位,方便控制,后面是创造的单位是给予玩家12(你的敌方)的。至于出现地点,可以是地区的中心,也可以是随机点,我这里选择的是传送门出现的地点,还有一个触发将是创造传送门的,然后用这个变量保存创造的传送门,这个等下会介绍到。    单位组 - Pick every unit in (Units owned by 玩家 12 (棕色)) and do (单位 - Order (Picked unit) to 攻击-移动到 (Center of Home <情报>))    //选取玩家12的所有单位攻击移动到Home地区(前面设定的,玩家基地)    这个是最常见也最实用的单位进攻方式,单位组的选取其实是采用玫举方式的,就是每一个单位做一个动作,但如果直接使用这样的语句会因为一次执行动作的单位过多(超过12支)而不能全部控制,因此一般都是将这个触发分开写:        这样写的好处是肯定每个单位都会执行到,而且我们知道因为是每个单位都做一次动作,所以我们还可以在中间加入一些对单位控制的动作,比如计数器,比如你加一个数值变量的赋值语句N=N+1在执行动作里面,那么最后输出的N就是选取的所有单位了,而且选取还可以附加条件,比如选取的单位是一个英雄为真,那么就只会选取英雄单位。    本演示具体的刷兵方式其实是从传送门的开始的,因为前面提到每次刷出的单位是在传送门的位置,所以我们现在先来看看传送门创造的触发。传送门创造其实和其它地图中的刷怪系统没什么区别,所以我们也需要有一个计时器来告诉我们传送门什么时候会出现,如图:      这个触发的事件是每经过35秒,通过计时器来运行传送门创造的触发器。    倒数计数器 - Create a timer window for Calculagraph with title 下一个传送门开启    //创造一个名为Calculagraph(变量)倒数计数器,标题是“下一个传送门开启”    倒数计数器 - Start Calculagraph as a 一次射击 timer that will expire in 30.00 seconds    //倒数计数器Calculagraph开始计时,次数为一次,时间为30秒。    Set Calculagraph_windows = (Last created timer window)    //设置倒数计时器窗口变量为最后创造的倒数计时器    玩家组 - Pick every player in (All players) and do (倒数计数器 - 显示 Calculagraph_windows for (Picked player))    //选取所有玩家显示数计数器窗口Calculagraph_windows。    Wait 29.00 seconds    倒数计时器 - Destroy Calculagraph_windows    //等待29秒删除倒数计时器窗口Calculagraph_windows    这就是创造和使用倒数计时器的简单 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 ,每一个计数器的窗口创建了必须要有一个结束的语句,另外如果还有其它计数器存在的话,就要使用变量了,这个演示中还有英雄复活的计数器,因此我使用变量。    计时结束以后,有几种方式可以用,一就是通过事件Timer Expires来判断计时器到期事件,这里需要用到变量,我没有使用这个事件,所以采用wait(等待语句来判断时间,为了避免BUG,时间为计时器-1),然后直接执行下面的动作。将attack_mumerical[3]赋值为attack_mumerical[3]+1,这个变量的作用是记录传送门出现的总次数,在设计中已经申明过,每六批为一个循环,所以我这里有三个循环,通过判断attack_mumerical[3]变量来确定执行哪一部分的触发器。    下面是IF 判断语句,第一个触发是如果attack_mumerical[3]小于或等于6,就执行触发器Create Carrydoor 1,下面的两个语句类同,区别在于一个是7
本文档为【魔兽地图制作教程1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_352419
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:21
分类:生活休闲
上传时间:2012-04-02
浏览量:68