2D游戏地图的制作

2024-06-15

2D游戏地图的制作(精选5篇)

2D游戏地图的制作 篇1

2D游戏地图的制作

概述:

地图制作在游戏中的作用非常之大,一个好的地图编辑器决定着一款游戏的好坏。目前世面上大部分的电脑游戏的地图都是如下格式,每个坐标代表人物在游戏中的坐标。

然而,在地图编辑器中,地图也是由很多很多的小图素拼接而成的。由于一张大的地图会出现很多重复的图素,那么我们就将这些图素提出来,称为基本图素。基本图素的好处是,可以重复使用。这样我们就可以用比较少的图片种类反复拼接成一张大图。这样做的好处是1,减少图片数量和磁盘容量;2,减少显卡和内存的负担;3加快游戏速度;4,更合理的利用资源。当然这么做的缺点也是有的1,反复利用同样的图素,画面将不好看;2,需要专业人员的大量拼接。切割工具

按照上面所说的,一张完美的地图的制作需要用到1,切割工具;2,拼图工具;3编辑器;4转换工具(3种工具之间格式的转换)。首先我们要从原画手里拿到我们需要的原图,再使用切割工具进行我们需要的切割,原图的要求是必须是64*64,128*128,256*256的倍数,我们可以

在图片规格那里可以选择我们要切的格式,然后加载所需要切割的图片,输出的ANI那里填好游戏目录里的路径。TITLE编号是由于会有很多文件的ani要写在一个ani里,所以为防止重复写入,则打开需要写入的ani文件,查看最后的编号,用此编号加1作为title开始编号。如果是第一次切割则为0。图片的文件名,需要填写完整路径,此路径为游戏中的路径,遮罩文件的文件夹名称一般为Mapobj这个文件夹里放置着植物、场景地形等其它静态物件。动态遮罩文件的文件夹名称为Cartoon一般来说,由多桢的静态图片连续播放,形成动态的图片都放在这里;地图基本图素放置的文件夹名称为puzzle。这些文件夹一般放在主目录的DATAmap目录下,文件夹里的子文件夹的名称按照分类命名。Pullze文件名是切割后的图片索引文件的目录,我们可以使用中文,这样在后面的拼图中会很方便。图片编号和位数 是在文件夹里图片自动命名的数字规格。

使用注意事项:在使用中1,确定每次切割的图片规格都是一样的;2,在切割之前千万要再看一遍ANI里所写的编号是否正确;3新生成的ani还需经过DaiBuilder.exe进行格式转换,这样可以提高地图编辑器在启动的过程中对ani的索引速度,实际上,有时候在地图编辑器中打开没有转换的ani也会出错!4,文件夹和图片的命名一定要一目了然,摆放规则。5文件若不是BMP或者tga文件则要转换为此二者格式。

拼图工具(puzzle.exe)

首先我们要把刚才所切割出来的PUZZLE文件按照我们的需要拼成模块,再用这些模块和原图素拼接成一张大的地图。

在拼接这些模块时1,需要打开两个puzzle.exe,一个为“选择—拾取”模式,另一个则为“编辑—填充”模式。快捷键Alt+Tab,可以在两者之间快速切换提高工作效率。2,我们按照示意图根据大小需要在“编辑—填充”模式的puzzle.exe中新建一张拼图文件,设定好高度和宽度,从选择—拾取”模式的puzzle.exe中拾取图素,填充到编辑—填充”模式的puzzle.exe中。然后命名保存。3,保存的一类文件最好也用文件夹区分开来。

拼接大图的时候,首先要注意1,你要拼多大的地图,在所有的示意图中其标名的计算单位都是以屏来计算的,而我们在编辑地图的过程中必须把它计算为格子数,这样才能确定新建立的地图高和宽,在制作新的地图的之前,我们必须先计算出地图大小,以便在使用puzzle.exe拼图工具的时候新建地图使用。例如我这次做的图为200屏,考虑到填加整图,所以设定为15*20屏,这样高度格子数:15*800/128=94宽度格子数:20*600/128=94。2,拼图时参考示意图,但尽量考虑多一些,一些地形地貌的变化要合理。变化图素的连接要曲折圆滑,切忌方方正正。3,尽量不要在同一屏内反复使用一种图素,这样会造成非常难看的地貌出现。4,拼接时,注意不要产生竖线一类的东西,那是图素之间没有连接好的缘故。

地图编辑器(Architect.exe)最后我们就要接触到地图编辑器了,在使用地图编辑器之前,我们要做好一些准备第一步,你的ANI写好了没?这个问题问得很怪,其实非常重要。你的底图ani文件是不会错的了,但你的遮罩ANI呢?在做遮罩ANI之前,你首先要注意,a所有的遮罩大小不能超过512*512,所以超过512*512的图都需要切割,b还有遮罩的画布大小必须是2的冥次方,如果不是,那么就要到PHOTOSHOP中修改并保存,c所有的遮罩文件一律要改成英文和数字的混合名称,并且最好不重复;d遮罩文件的目录在datamapobj下分类放置;e记住你的文件名是否当中有空格一类的错误;f将CoverAniMaker.exe文件拷贝到datamapobj内,双击打开后,依次输入mapscene.ani,0。则开始自动生成ani和ini文件,将mapscene.ani拷贝到ANI文件夹后,需要将ANI用DaiBuilder.exe转换一下。G,将生成的INI里的按照序列号位置粘贴到map.ini中。最后记得把map.ini中CoverAmount处加上新增加遮罩物件的个数。h多祯动态遮罩物件ini的编写,需要手写,具体写法请参照地图编辑器-入门。I,全部写好后先不急着开始做,随便建个地图看看是否所有的遮罩都能显示,如果不行就得检查原因,常见的错误有1,文件名重复2,文件名中间有空格3,ANI文件没有转换4,路径错误或无图片5,map.ini中CoverAmount未重设遮罩物件的个数。

第二步,接下来我们新建一个地图文件了,打开新建地图,选择我们刚才做好的整图,他的后缀为.puzzle。以后存储的时候用存储为tmap文件,这样可以进行编辑,还有点要注意的是,新建地图所用的PUZZLE文件不要用中文名,否则编辑TMAP文件后会不识底图的。

第三步打掩码。在给地图添加掩码的时候先点初始化掩码,再把地图的四周打上掩码,规则是:上3行,下两行,左右各一行,这里所指的行都是按照完整的掩码格子计算。小范围的填加掩码只要按住CTRL键拖动鼠标即可,大范围的添加掩码则可以用右键拖动。清除掩码也是如此。在机战地图中,掩码要多打一些,原因是机战中的人物和怪物都是机器人,体形庞大,掩码打的少则会卡在地图中,还有的是会造成穿邦现象。

第四步打遮罩。遮罩在地图中的作用不可小看,所以在打遮罩的时候要注意一些建筑的遮罩要反复设定重心的坐标,直到和底图重合的时候不会模糊才可以,当你选好坐标加上遮罩的时候,记得在遮罩描边上用鼠标扫一下,如果画面无晃动则表示坐标准确,反之则还可以再继续调整。一些树的遮罩要记得注意附近的地形,沙漠地区和沙滩附近的植物是不同的。

第五步打地形。地形有个技巧,先根据本图的特点和地形把一些比较少的地形特点先打上,然后再修改TMAP里的文件,修改成相应的地形码即可,然后再反复的修改直到满意。在打地形的时候有时候会遇到编辑器里还没有的地形,则需要在Terrian.ini里填加,格式按照其他已有的地形格式,加好后千万别忘记在最上面的[文件头信息]地形数量写对啊。

第六步高度设置。在游戏中有些人可以走到,但明显有高低变化的地方需要打上高度,这样在人行走的时候会后仰,前倾,体现地图的真实性,而在一些人不可能达到的地方,列如河对岸和高山,悬崖则需要打上比较高的高,具体高度看游戏设定,因为在有的游戏中是可以跳的。

第七步检查修改。当你把上面的步骤都完成的时候,一张完整的地图就做完了,但是我们还需要再仔细的检查修改一下。我们放大地图看一下,是否有遗漏,在底图上是否还有竖线一类的条纹。是否部分地方图素是一样的,是否部分片区掩码遮罩等没打,遮罩是否合理。然后我们在缩小再检查,看是否有掩码漏打的地方,遮罩布局是否合理,整个地图的感觉如何。做细微的调整。

第八步整填加切屏点,保存地图为TMAP和DMAP格式,完成。

名词解释: 1,ANI文件

它是一种记录序列的文件,这样的文件将有表头一段语句表达记录类型和数量,正文是编号和该编号代表的路径。被一个场景的所有图素拼接序列,人物的动作序列都可以用来表示,加载地图或者加载一段人物的动作的时候,只需要读取相应ANI即可。2,INI文件

配置文件,往往记录的是一些最基础的配置,列如一个怪物的配置文件中会记录该怪物的头像,声音,模型,贴图,移动速度等(有些即时制游戏或3D游戏会记录在数据库中)。也用于软件的配置文件。3,PUZZL 这是图素拼接的工具,列如美术出10个格子,将这10个格子画在一个图中,每个格子有64*64大小,那么我们按照64*64大小分割会得到10个64*64的小图片。这些小图片存在客户端中,每个都有编号,然后,我们利用这10个格子来拼地图。地图是有坐标的,那么则可以记录坐标对应的小图片(图素),这样。一张地图出来的时候,有多少个坐标就对应了多少小图片,客户端就可以按照这个把图片显示出来。4,屏

这个是2D游戏中表示大小的单位。一屏有800*600象素大小。5,mapobj 物件和遮罩的文件夹。6,TMAP和DMAP 每个公司都不一样的称呼,其实就是编辑器认识的文件和客户端认识的文件。记录了这个场景所拥有的坐标,坐标对应的ANI(图素路径);坐标对应的遮罩,掩码等。7,坐标系。

坐标系有很多,美术坐标是按照象素划分,每个象素是一个坐标。程序坐标是按照世界大小划分,每个场景都有一个唯一坐标。地图编辑器还会用到图素坐标,即时按照图素划分的坐标,例如基础图素大小为64*64,那么就是说64*64象素就是一个坐标,用这个坐标来对应图片。

策划也用到一个坐标是一步就是一个坐标,或者说图中的那个小格子,每个小格子都有自己的属性,高低,掩码,水陆属性等。

2D游戏地图的制作 篇2

XNA是微软公司针对业余创作者所设计的游戏开发套件, 是基于DirectX的游戏开发环境, 以Visual C#Express 2005为基础, 并加入游戏应用所需的函数库构成XNA Framework。XNA Framework在一个特别为有管理式游戏运行的通用语言执行层 (Common Language Runtime) 版本上运行。这个执行层支援Windows XP、Windows Vista和XBox 360。由于游戏是开发在执行层上, 使得游戏能在所有支持XNA Framework的平台上只要很少甚至不需要任何更改便能运行。现时所有在XNA Framework上的游戏必需使用C#和XNA Game Studio Express IDE开发。

XNA Framework把所有用作游戏编程的低阶技术包起来, 由此, 游戏开发员就可以专注于游戏内容开发而不用关心游戏移植至不同平台上的问题, 游戏只要开发于XNA的平台上, 所有硬件只要支援XNA都能运行。XNA Framework还内置一些工具, 例如XACT以帮助游戏内容开发。这些工具还能帮助开发视觉、听觉效果和像真度很高的模型制作。

XNA只是一个游戏开发框架, 不是游戏引擎。原来C#开发游戏都是使用Managed DirectX, 现在取而代之的是XNA。XNA的目标是用C#在.Net Framework上开发跨平台游戏。其使用工具Visual Studio Express 2005及以上版本, 安装XNA Game Studio Express。

安装版本可选:VS2005+XNA2.0、VS2008+XNA3.1或VS2010+XNA4.0。

2 XNA中Game类的预定义方法

Initialize方法也只被调用一次, 在所有内部初始化完成之后。这个方法可以放置初始化变量, 诸如游戏中的物体的初始位置和初始速度等, 即可以访问游戏对象的所有资源了。

LoadContent方法在Initialize方法之后调用, 它用于加载游戏所需要的图形或其他素材, 比如模型、图片、视频、声音等, 这个方法在项目开始只被调用一次。

Update方法用于改变和控制游戏的状态, 主导着游戏逻辑的计算运行, 可以是更新物体的位置, 碰撞检测, 在一个位置开始爆炸, 增加得分等。

Draw方法用于在屏幕上绘制场景及Sprite。值得注意的是应该尽可能少在Draw方法中处理游戏逻辑, 这些逻辑运算应该在Update方法中被处理。Draw方法中尽量只是屏幕绘制。

Update和Draw方法都接受一个GameTime类型的参数, 这个参数可以依据实际的游戏时间而不是处理器的速度来决定动画或其他事件的发生时刻。

UnloadContent方法在游戏结束时被调用。该方法用于卸载在LoadContent方法中使用的素材和那些需要进行特别处理的资源及要清除的对象等。

3素材准备

下面以拼图游戏为例, 详细介绍如何利用XNA游戏框架制作自己的游戏。

首先, 准备两张图片, 可以根据自己的需要准备, 其中一张就是显示过关之类的图片, 另一张就是要拼图的图片;然后准备一首音效文件和一首准备做背景音乐的曲子。准备好后, 就来制作自己的拼图游戏。

4工程项目

新建一个工程文件, 选择XNA Game Studio项目, 在这里选择xna3.1建立pt工程项目, 如图1所示。

系统自动建立一个namespace pt的空间, 在该空间下有一个Game1类, 这就是游戏运行基本框架类。

先在Game1的构造方法中, 定义游戏窗口。

IsMouseVisible属性为真时, 在游戏窗口中显示鼠标光标, 否则不显示。

graphics.PreferredBackBufferHeight graphics.PreferredBack

BufferWidth属性分别表示游戏屏幕的宽度和高度;

this.TargetElapsedTime是设置当前刷新频率, 一般是Update和Draw的刷新频率, 但是Update和Draw频率不一定一致, 根据设定的频率值和硬件自身刷新频率决定, 如果设定刷新频率值大于硬件刷新频率时, 自动减低为硬件频率, 这里使用每秒刷新80次;

Window.Title属性是设置和返回游戏窗口标题。

窗口定义代码完成后, 就在Initialize中定义游戏所需的一些变量并初始化。

在该游戏中定义游戏变量。

Select变量在没有选择图片时为false, listrect变量初始化, 将保存所有图片随机分块后Rectangle属性的变量;movexy是鼠标移动选择图片后的变化量;tempxy保存鼠标上一次的坐标值;selectpoint是当前所选择图片的数组维数, 代表横向、纵向位置;currentmap按下鼠标左键时选择的图片map属性。

变量初始化完成, 后面就是要装载游戏的资源, 使用LoadContent () 方法, 完成所需资源。

首先是把图片装载到工程中, 在解决方案的content目录下创建pic目录 (不创建也行) , 所有的图片文件保存在这个目录下, 然后选择pic目录, 点击鼠标右键, 选择添加现有项, 把先前准备的图片添加进来, 如图2所示。

在LoadContent中写入一下代码:

spriteBatch是后面要绘制目标时所用到的变量 (称为精灵) ;background是准备拼图的图片资源;crosspic是过关时显示过关的图片, 在使用XNA开发中, XNA只支持英文, 不支持中文显示, 因此必须利用其他方法来显示中文, 这里使用事先准备好的图片显示中文;sf就是显示英文或数字的字体库, 该字体资源需要创建。在工程文件中右击添加新项目, 在模板中选择Sprite Font模板, 随便起个名称, 这里起名ptfont, 点击添加, 字体文件创建完成, 然后右击pt工程项目下的Content, 添加现有项, 将字体添加进工程文件中, 如图3所示。

rndmap就是把准备好的图片文件 (background) 分成数块, 随机显示在不同位置, 以供拼图使用。下面给出这个方法代码。

在这个方法中, 先根据关数level来把图片分块, 基本上是2的倍数, 每过一关, 图片就以2的倍数分块, 第一关横是2块, 纵是2块, 共4块;第二关就是横竖4块, 全部共16块, 依次类推。首先根据关数计算出此关共需划分多少图片块, 然后按照分辨率计算出每个要在屏幕上显示小图块的宽度 (picwidth) 、高度 (picheight) , 同时, 按照原图片的实际大小也要计算出每个划分的小图片实际宽度 (bmpwidth) 、高度 (bmpheight) 。最后对数组把图块计算的实际位置及在屏幕上显示的位置保存在map数组中, 并计算保存将要显示的随机位置。计算随机位置在rndm方法中实现, 下面是实现代码:

利用out引用传递参数, 在这里是把计算出来的图片随机显示并保存随机位置。为了保证每次产生的位置不同, 利用DateTime.Now.Ticks种子数, 产生随机位置, 同时把随机位置保存在listrect中, 每次计算出来的位置都在listrect中检查是否已经存在该位置, 如果有则重新计算, 没有就把数据保存在listrect中, 以便下个图片位置计算时数据检查, 同时将数据赋值给out参数, 也就是把这个数据保存在map数组中, 这里要注意, 每次调用该方法时, 以前计算的值清空为零, out参数返回时, 必须要赋值。

现在已经把一副完整的图片按照关数分成数块, 并且随机显示在不同位置, 下面是Update方法的实现代码。

在Update方法中按下F5键, 可以显示原来一个完整图片, 就是复原被打乱的图片, 定义一个Bool变量original来实现;按下F10键进行窗口和全屏之间转换, 利用graphics.ToggleFullScreen () 方法实现, 这个功能是为了调试的时候使用, 在全屏调试程序的时候, 出现逻辑错误, 等待很长时间无法从全屏切换出来, 始终显示全屏, 最后只有用Del+Alt+Ctrl终止, 所以调试时使用窗口运行, 可以避免不必要的麻烦。按下F1键, 在每个图片上显示这个图片原来的位置, 这是一个作弊使用的键, 定义一个Bool变量cheat来实现作弊功能, 图片显示数字按从上至下的顺序排列, 这也是在调试程序时能够快速通关时使用的。这3个功能键在每次判断时都有一个cheatcount变量进行累加, 当变量累加到40时, 恢复置零, 前面设置刷新频率是每秒80次, 这里为40, 也就是每0.5秒对键盘扫描刷新一次, 如果这个变量扫描周期太快, 按键的速度没有大于扫描周期, 可能在按下按键还没来得及松开按键, 就进入下一个扫描周期, 使变量又回到初始值, 达不到预期目的, 因此必须增加一个扫描周期的判断。按下ESC键退出游戏, 这个不用多说了。

在这个游戏中就使用这4个按键, 下面就是游戏开始操作的逻辑功能的实现。对于想要移动的任何一个图片, 把鼠标放在该图片的任何位置上, 按住鼠标左键不放, 拖动到想要放置的位置上, 松开左键就可以了, 这里就必须要知道鼠标移动的变化量, 根据鼠标的变化量来移动图片。首先要判断鼠标还在游戏屏幕范围内, 如果使用的是全屏游戏, 可以不用判断, 使用checkscreen方法进行判断, 下面看看这个方法的实现:

根据鼠标当前位置, 判断是否超出当前屏幕的范围, 如果使用窗口游戏时, 鼠标不在游戏屏幕范围内, 鼠标坐标可能为负值小于0, 或者大于屏幕宽度、高度, 就用graphics中的变量PreferredBackBufferWidth、PreferredBackBufferHeight进行判断比较, 如果超过这个范围, 则可以确定鼠标不在当前窗口内, 方法返回假, 否则返回真。

在游戏窗口内, 判断鼠标左键是否按下, 并选择了图片, 利用mouse方法保存当前被选择的图片属性, 下面是mouse方法代码:

在鼠标移动到一个小图片上按下左键, 先保存这个鼠标的坐标位置, 按住左键移动, 利用当前鼠标坐标和先前保存的坐标值计算鼠标的移动量, 被选择的图片按鼠标移动量移动, 同时当前选择图片的数组维数及它的属性保存在selectpoint、currentmap变量中。

方法selectmap根据当前鼠标坐标值, 计算鼠标是在哪个图片上, 返回这个图片在数组中的数组维数。

先把当前鼠标坐标值转换成矩形范围, 利用一个循环判断图片数组位置的矩形范围是否在鼠标坐标范围中, Intersects方法完成两个矩形是否包含, 如果是就返回真, selectmap方法返回该图片数组维数;另一种情况是鼠标移动到原来图片的位置, 此时就用selectmap返回图片原来的数组维数。

当图片移动到相应的位置时, 松开鼠标左键, 此时, 移动的图片显示在该位置, 原位置的图片显示在移动过来的图片位置上, 就必须把移动来的图片rectangle属性mouserect和原位置图片的mouserect属性交换。

交换两个图片属性通过twappic方法实现, 下面是twappic方法代码:

以上代码是鼠标选择图片移动到相应的位置上, 然后互换图片。每次图片移动完成, 必须判断是否过关, 接下来编写一个victory方法判断是否过关。

该方法判断实现比较简单, 就是利用定义的map结构中的mouserect和rect两个变量的X、Y值是否相等, rect变量值是这个图片实际应该所在的位置, mouserect是随机和鼠标移动时的位置。如果这两个变量所代表的位置相等, 就可以判断图片移动位置正确, 全部相等时, 就可以判断已经过关。这个方法中, 为了保证原图片宽度、高度与屏幕的显示的宽度和高度不一样时, 把位置转换为数组维数判断, 利用每个分开的小图片所在位置除以这个图片的宽度、高度, 得到数组维数, 这在不同的图片和游戏屏幕的宽度、高度不等时也有效。

使用cross变量判断是否过关。过关后, 先显示过关图片, 显示时间通过变量count控制, 因为设定的是每秒刷新80次, 也就是每秒程序调用Update 80次, 设定过关图片显示3秒后进入下一关, 就把count设定大于240, 这样控制显示时间, 显示时间到了后, level变量加1进入下一关, 调用rndmap方法, 重新分割图片, 随机显示。在level变量之后增加了一个使用电脑中图片来拼图的功能, 当level大于1的时候, 也就是第二关以后 (这个读者可以自行设定, 为了简单, 就设定2关) , 就从content目录下pic目录中读取一个jpg文件作为拼图的原图片装载进来。如果没有jpg文件, 就还是使用资源中定义的图片。

至此为止, 这个游戏的逻辑判断已经完成, 下面就是要把图片在屏幕上显示出来, 可以在Draw方法中显示出一个拼图随机显示的图像, 并显示移动图片过程的方法, 在这个方法中尽量不要使用逻辑计算, 把计算等放在update方法中, 这个方法就只做绘制工作, 下面是Draw方法代码:

以上方法使用spritebatch.Draw绘制每张图片, 利用map结构中的mouserect变量绘制图片, 这里注意的是map结构中的rect、mouserect代表不同的位置, rect是根据实际图片宽度、高度划分小图片的宽度、高度;mouserect根据屏幕分辨率划分图片, 这在图片的大小与屏幕大小不同时, 可在屏幕上显示分割后全部的图片。spritebatch.Draw绘制时目标范围使用mouserect, 原位置就使用rect。

至此, 按F5键, 程序编译运行, 可以看看运行结果, 如图4所示。

现在游戏基本已经完成, 为了增加游戏的趣味性, 在游戏中添加上声音, 一个是背景声音, 另一个就是移动图片后, 放开鼠标按键的声音。下面来把声音加入程序中, 首先, 在开始菜单中选择XNA下tool中的xact, 运行声音文件工程项目, 选择创建新的声音工程项目, 工程项目名sound, 如图5所示。

选择Wave Banks, 右击创建新的wave banks, 起名wav, 双击wav, 打开 (wav) wave banks, 在 (wav) wave banks面板中右击选择insert wave file, 把前面准备的声音文件添加进来。然后, 在sound banks中创建新的sound banks, 起名sou, 双击打开sou面板, 拖动wav中的声音文件到sou面板sound name中, 再把sound name中文件拖到下面的cue name中, 重命名为up, 到这声音工程文件创建完成。选择声音文件, 在左下角操作面板中, 可以修改声音播放的属性。

按下F7键, 建立完成声音sound工程文件, 如图6所示。

在程序pt工程文件中, content下建立一个sound目录, 右击添加现有项, 将声音工程项目sound.xap添加到这个目录下, 再添加一个背景音乐文件到sound目录下, 这里的背景音乐是back.mp3文件, xact对wav、MP3文件可以直接使用。声音项目和文件添加完成后, 下面看看程序使用声音资源, 在LoadContent方法中, 添加如下代码:

这里就可以连续播放背景音乐, 使用MediaPlay只能播放一首音乐, 因此用它来播放背景音乐。在播放音效时, 就不能使用它, 而是使用SoundBank来播放, 它可以同时播放多个声音。为了每次能够播放声音, 在Update方法中加入audio.Update () 方法, 在每次调用Update时都要调用audio.Update, 否则不能播放声音。在鼠标按键松开时加入sound.PlayCue ("up") 方法, 播放前面声音项目中cue name定义的声音。

5程序代码

5.1 Game1.cs源代码

5.2 Program.cs源代码

6结语

介绍如何使用XNA提供的游戏框架, 来完成的游戏, 文中逻辑运算只是举例, 读者可以根据自己的需要进行修改。XNA Framework支持2D和3D的游戏开发也支持XBox 360的控制器和震动效果。由于XNA基于.NET, 其开发效率比C++直接调用DirectX API快了不少, 对于业余的游戏开发者, 是件好事, 运行程序须安装XNA3.1运行库和.Net Framework库即可运行。

2D游戏地图的制作 篇3

效果:

点击这里下载源文件

在做游戏的时候,特别是rpg游戏,常常有很多任务,以下是我的游戏任务解决方案,提供出来大家分享:

第一步:首先写一个 任务的类 task.as

class task {

//定义事件的名称,进度,描述

var SjName, SjJd, SjMs;

function task(N, J, M) {

SjName = N;

SjJd = J;

SjMs = M;

}

//显示单个任务信息

function SjInfo(a) {

if (a == 1) {

return SjMs;

}

return SjName;

}

//完成任务

function SjFinish {

if (SjJd==0) {

SjJd = 1;

} else {

trace(SjName+“的任务,已经完成或者未触发”);

}

}

//触发任务

function SjOpen() {

if(SjJd==-1)

{

SjJd = 0;}

else{

trace(SjName+“的任务,已经触发或者完成”);

}

}

}

第二步:在task.as目录下面新建Flash 测试.fla,在第一帧里面声明 游戏的所有任务

//定义事件 (名称,进度,描述)

var Sj1:task = new task(“帮助王大爷”, -1, “到附近的铁牛山帮助王大爷看看他的外孙”);

var Sj2:task = new task(“帮助千秋学找媳妇”, -1, “到重庆去找帮千秋学媳妇”);

var Sj3:task = new task(“帮助李大爷”, -1, “送信给隔壁村子的张阿姨”);

var Sj4:task = new task(“帮助赵员外”, 1, “到附近的丹霞岭帮助赵员外采集草药”);

var Sj5:task = new task(“帮助李铁匠”, 0, “李铁匠的女儿被山贼给掳走了,在黑风洞里面区找线索”);

var Alltask = new Array(Sj1, Sj2, Sj3, Sj4, Sj5);

//显示事件列表

function ShowShijian() {

_root.Info = “ 系 统 消 息

========================

”;

for (var i:Number = 0; i<_root.Alltask.length; i++) {

if (_root.Alltask[i].SjJd == 0) {

_root.Info += “

”+(i+1)+“、”+_root.Alltask[i].SjMs+“[进行中]

----------------”;

}

if (_root.Alltask[i].SjJd == 1) {

_root.Info += “

”+(i+1)+“、”+_root.Alltask[i].SjMs+“[已完成]

----------------”;

}

if (_root.Alltask[i].SjJd == -1) {

_root.Info += “

”+(i+1)+“、”+_root.Alltask[i].SjMs+“[未触发]

----------------”;

}

}

}

第三步:在第一帧上面放入以下元件

1、画一个动态文本,属性设置如下:多行显示,允许html,变量为info

2、拖入1个Flash的button组件 ,属性如下:参数label为:得到任务列表,加上以下AS

on(click)

{

_root.ShowShijian();

}

3、拖入1个Flash的button组件 ,属性如下:参数label为:激活事件1,加上以下AS

on(click)

{

_root.Sj1.SjOpen();

_root.ShowShijian();

}

4、拖入1个Flash的button组件 ,属性如下:参数label为:激完成任务1,加上以下AS

on(click)

{

_root.Sj1.SjFinish();

_root.ShowShijian();

}

到这里就完成了,

沙盘游戏制作过程 篇4

(一)——如何向来访者介绍沙盘

[日期:2011-11-18]

来源: 作者:申荷永 高岚

[字体:大 中 小]

沙盘游戏的过程是沙盘游戏实践的体现,其中包含着沙盘游戏的操作与要求,也包含着沙盘游戏的意义和作用。沙盘游戏的开始、初始沙盘的意义、沙盘游戏的主题、沙盘游戏的阶段,以及沙盘游戏的发展等,将成为我们所讨论与分析的主要内容。沙盘游戏是一个互动与变化的过程,在此过程中,沙盘游戏者与沙盘分析者将获得共同的发展与成长。

一、沙盘游戏的开始

如何开始沙盘游戏,包括应该如何向来访者介绍沙盘游戏,在沙盘游戏的过程中沙盘分析师应该做什么,以及如何结束和拆除沙盘,都是我们沙盘游戏的实践所必然要遇到的最基本的问题。

(一)如何向来访者介绍沙盘

对于大部分来访者来说,当他们走进沙盘游戏治疗室的时候,并不意味着对沙盘游戏已经有多少了解。以下三种情况是最常见的向来访者介绍沙盘游戏的途径和方式。1.来访者的自发兴趣

有一些来访者,在刚进入沙盘游戏室的时候,就会被诸多的沙盘游戏模型吸引,情不自禁地询问这么多的“小玩具”是做什么用的。于是这就形成了一个很自然的向来访者介绍沙盘游戏的机会。

作为沙盘游戏分析师,可以这样向来访者介绍沙盘:

这些“小玩具”都是用来做沙盘游戏的模型,你看,有各种各样的动物,也有许多不同种类的植物;有不同民族、不同身份和不同动作的人物,也有各种文化和宗教背景的模型;有各种交通工具,许多建筑材料和家庭用品等等。然后,可以向来访者介绍“沙盘”:这里是两个沙盘,一个是干的沙盘,一个是湿的沙盘。湿的沙盘可以放水,这样容易在沙盘上做出城堡等造型。两个沙盘的底面都是天蓝色的。

这时沙盘游戏师可以用手来扒开沙子,露出蓝色的沙盘底面。也可以邀请来访者触摸一下沙子,若是他愿意的话,然后看他有怎样的反应和感觉。

然后,沙盘游戏分析师可以简单地介绍一下沙盘游戏及其治疗的大概背景,然后告诉来访者,若是他愿意的话,也可以做一个沙盘,然后一起来讨论和分析。

有些来访者,在获得分析师的同意之后,就这样自发地开始了其沙盘游戏的过程。尤其是儿童,总是更容易被沙盘游戏室的特殊布置和气氛所吸引,很自然地就开始了其沙盘游戏的过程。

2.初始访谈中的介绍 同样是在初次访谈中,或许来访者一开始就产生了对沙盘游戏的好奇,但是并没有像第一种情形的来访者那样直接就发出了有关的询问。在这种情况下,沙盘游戏分析师可以在履行心理治疗初次访谈的过程中,向来访者介绍沙盘游戏.

目前国际沙盘游戏治疗学会认可的许多沙盘游戏治疗师,本身都是荣格心理分析家,或具有荣格分析心理学的理论倾向。因而,在初次访谈中,会向来访者介绍自己的理论取向,包括自己对心理治疗和心理分析的理解,以及所要采用的主要治疗方法等,这样自然就会要提出和介绍沙盘游戏。

比如,可以向来访者大致介绍沙盘游戏的背景,卡尔夫所提出的“自由与保护”的特点,以及沙盘游戏之“非言语”和“非导向”的心理治疗特征等。当然,无意识水平的工作,象征性的分析原理以及感应性的转化机制等,也可以针对来访者的个人情况而进行适当的介绍。然后,可以像情形一中所介绍的那样来介绍沙盘游戏模型和沙盘,或让来访者接触与感受沙盘,然后看他是否选择沙盘游戏治疗。

若是来访者表现出了对沙盘游戏治疗的兴趣,很可能当时就会询问分析师是否他现在就可以试一下沙盘游戏。或者,根据当时时间的关系(一般要留出30分钟左右的做沙盘的时间),分析师可以与来访者约定,下次的分析时间就开始做沙盘。3.分析过程中的启迪

沙盘游戏是无意识水平上的工作。若是来访者没有“准备好”,那么,即使有分析师的介绍,可能也没有表现出自己要做沙盘游戏的明确信息或态度。在这种情况下,作为分析师可以先采用其他方式和途径进行心理治疗,但是随着治疗与分析的进展,尤其是医患关系的发展,包括其中的移情等因素的介入,来访者可能会重新产生做沙盘游戏的兴趣和愿望。在我们的沙盘游戏实践中,常会遇到这样的情景,在分析治疗的过程中,来访者可能看到了沙盘游戏架上的某一个模型,或者是受其吸引和影响,于是挑选了用它来表达某种象征的意义。或者是在分析师的启发下,选择了某些沙盘游戏模型来表达自己的一个梦境。甚至是直接开始在沙盘上,用所选择的沙盘游戏模型来表现自己的梦境,或者是童年的记忆和故事。类似的情景都可看做是在分析过程的启发下所开始的沙盘游戏。

来访者一旦开始了其最初的沙盘体验,一般来说也都会经常选择沙盘游戏来作为自己的分析治疗方式。但需要指出的是,分析师不能刻意暗示或迫使来访者去做沙盘,对此我们将在下面有关的注意事项中予以讨论。4.开始沙盘游戏的“指导语”

实际上,沙盘游戏治疗并没有任何固定的“指导语”,有经验的沙盘游戏分析师,总是根据不同的情景、不同的个案从而选用不同的方式甚至是不同的语言和语气来介绍沙盘。也就是说,面对不同的情景,不同的来访者(成年人和儿童,以及不同的人格类型),指导语也会有所不同。但是一般来说,以下的表述可以作为参考:

“你若是愿意,就可以用沙盘游戏玩具架上的任何小玩具,在干的沙盘或湿的沙盘上,摆出自己想要表达的任何内容。” 有的时候,会遇到来访者说:“我想做沙盘,但不知道怎样开始。”这时,我们一般会说:“你可以先用手来感觉一下沙盘,把手放在沙子上,给自己一点时间,比如说1分钟或2分钟,通过自己的双手来感受一下沙盘,看是否会获得某种感觉,随着这种感觉来形成某种意象,然后,带着这种感觉和意象,去沙盘游戏架上寻找自己所喜欢的玩具模型,来完成自己的意象和感受。”

同时,我们也会向来访者说:“你也可以先从沙盘游戏架开始,去感觉一下那些不同的小玩具模型,选择自己所喜欢的,然后用干的沙盘或湿的沙盘来表现它们,或者是通过它们来呈现自己所想要表达的内容。” 5.开始沙盘游戏的“注意事项”

在向来访者介绍沙盘游戏,以及在最初开始沙盘游戏的时候,需要特别注意以下事项。首先是不要“迫使”来访者去做沙盘游戏。沙盘游戏治疗师可以用自己的方式介绍沙盘,但不要让来访者感到非要去做沙盘游戏的压力。每个人都有适合其自己的沟通无意识的途径,也都需要有自己接触无意识的内在准备。作为治疗师,需要提供多种的选择与可能,让来访者自己做自由的决定。

其次,有些来访者在某些时候可能不适合做沙盘游戏治疗,比如具有意识发展障碍或意识承受力较弱以及不能控制自己的情绪等。同时,要注意有些来访者,可能会在沙盘游戏的过程中,引发出内在的创伤体验或情结。作为沙盘游戏治疗师,尽管是在无意识水平中进行工作,但对于来访者的意识承受性需要特别的注意。

再者,沙盘游戏被称为“非言语治疗”,尽管并非是指不说话的治疗,但在来访者进行沙盘游戏的过程中,分析师需要尽量保持默默地观望与守护,避免干扰来访者内在的工作与表现。同时,当来访者主动要求语言交流的时候,不管是需要帮助,还是主动提出了问题,分析师则可以根据基本的心理治疗技术来予以回应。

沙盘游戏的开始

(二)——沙盘游戏的守护与观察

[日期:2011-07-14]

来源:转载 作者:申荷永 高岚

[字体:大 中 小]

当根据具体的情景,向来访者介绍了心理沙盘,而来访者也愿意并开始了沙盘游戏的时候,分析师要做什么呢?其中也包含着这样一个问题,即如何理解分析师在沙盘游戏过程中的作用。对此,我们将从以下几个方面来展开分析与讨论。1.沙盘游戏中容纳性的守护

在一般的沙盘游戏专著中,都强调了沙盘游戏的非言语和非引导性特点,因而也就产生了这样一个问题:当来访者开始做沙盘的时候,作为分析师应该做什么?怎样做?根据我们的实践经验,如下的几个方面都是作为分析师所要做到的。

首先是能够“容纳”或“承受”(contain)来访者及其所带来以及表现的问题。从理论上来说,沙盘本身便是一个“容器”(container)。来访者往往是带着许多心理上的问题前来沙盘游戏治疗室寻求帮助的,或许正是由于其所遇到的心理压力或困惑,超出了其原有的承受力,才促使他寻求心理治疗。因而,一旦开始了沙盘游戏的过程,来访者也就很容易将其心理问题表现或投放在沙盘之中。但是,从本质上来说,不是沙盘在承受,或容纳了来访者所呈现的问题,而是分析师。于是,承受和容纳来访者及其问题,是沙盘游戏分析师首先需要做到的。其次,当来访者开始做其沙盘游戏的时候,作为分析师需要守护住沙盘、沙盘室的气氛,乃至游戏的整个过程。这也是卡尔夫所强调的沙盘游戏之“自由保护”的体现。来访者不仅仅是在沙盘上做轻松的游戏,而且是在呈现其内心深处的存在,包括其所曾受过的伤害,或者是最隐私的秘密。因而,作为沙盘游戏分析师,要用其专业的态度、专业的素养、专业的技能,全神贯注地守护住这沙盘。

再者,作为沙盘游戏分析师,当来访者开始做其沙盘游戏的时候,在承受、容纳和守护的同时,也能起到陪同的作用,发挥共情的力量。正如前面所提到的伊娜娜故事中的启示,当一个人遭遇不幸的时候,能有人陪伴本身便是一种治愈的力量和作用。而这种陪伴是以接受与容纳病人及其病患为前提的。2.沙盘游戏中参与性的观察

对于沙盘游戏的过程和分析治疗来说,分析师的观察十分重要。《易经》中有“觀”卦,下坤上巽,有“风行地上”之象。四阴爻以次叠起,二阳爻贯通于下。风行地上,则草木偃然飘摇,隐伏其中的鸟兽亦约可见。不管是觀卦之象的寓意还是卦名汉字的象征,都包含着一种明察幽隐、内视或透视的意境。如《说文解字》中称观为“谛视”,《老子.第一章》曰:“故常无欲以观其妙;常有欲以观其缴……”尽显“观”中的无有妙象。

在佛家用语中,“观”中包含着一种特殊的观察妄惑的智力。《大乘义章》卷二曰:“粗思曰觉,细思曰观。”观与止对,又是修定的法门。《摩诃止观》卷一日:“法性寂然名止,寂而常照名观。”《心经》开篇亦用了一个“观”字,曰:“观自在菩萨。”心观而能观心,无所住而能生其心。

于是,沙盘游戏中的观察,也应该包含“观”中之深意,透过来访者在沙盘游戏过程中的所有表现与细节,来呈现其中所蕴含的心理、行为乃至无意识生命的意义。称其为“参与陸的观察”,是因为分析师本身也是需要观察的沙盘游戏过程中的一部分。比如,当面对来访者进行其沙盘游戏的时候,作为分析师的所有的反应,不管是情绪和情感的,还是认知与行为的,也都在观察之列。

参与性的观察中也包含了“体察”,所有呈现在沙盘游戏过程中的意念或心象,都有可能获得某种实体性的感觉,从而引起来访者以及分析师的身体反应。而这正是沙盘游戏的参与性观察中的重要内容。同时,在我们所使用的“参与性的观察”中,还包含了“观照”的意义。在佛家的用语中,观照包含着用智慧之光来照明真理的寓意。将其美好的意象转化在沙盘游戏的过程中,那么作为分析师的存在,犹如一面镜子,能够为来访者的无意识表现和自我探索提供这种观照的作用。

在这种意义上,参与性的观察与容纳性的守护具有相同的意义。或者说,容纳、守护、陪同和共情的意义和作用,都可以在参与性的观察中体现出来。王弼在研读《易经.观卦》的时候深有感悟,曾发挥出“观”中所包含的“观感化物”的心理学原则。他阐释道:“统说《观》之道,不以刑制使物,而以观感化物。神则无形者也,不见天之使四时,而„四吋不忒‟。不见圣人使百姓,而百姓自服也。”观感而能化物,分析师的容纳性的守护和参与性的观察本身,便包含着治疗与治愈的作用。3.沙盘游戏中陪同性的探索

沙盘游戏同样是自我探索的过程,但是在这探索之中,来访者不是孤军奋战,而是有分析师的容纳、参与和陪同.在这陪同之中,也包含了移情的效能和共情的治愈力量,也就包含着沙盘游戏分析师的作用和意义。

就陪同而言,当来访者在呈现其压力和创伤的时候,分析师是同在的,在与其分担压力和痛苦,陪同他思索创伤与痛苦所具有的象征性作用;当来访者表现其幸福与善良的时候,分析师可以与其分享喜悦,陪同他探索人生所蕴含的意义;当来访者在展现其潜力和智慧的时候,分析师也是同在的,可以见证来访者的发展与变化。在陪同的前提下,来访者可以获得支持其探索的勇气和力量。

陪同性的探索还包含这样一种意义,也即分析师与来访者共同成长,共同探索治疗的意义和治愈的作用,共同经历自性的觉醒与自性化的过程。当然,在陪同的前提下,分析师可以发挥其共情的能力和作用,促成感应的出现与发展,从而产生治愈和转化的效果。

沙盘游戏的开始

(三)——沙盘游戏的结束与拆除

[日期:2010-09-13]

来源:转载 作者:申荷永 高岚

[字体:大 中 小]

一般的个别沙盘游戏治疗,仍然是采用50分钟的工作时间。大部分来访者在15—30分钟内可以完成其沙盘游戏的操作。采用湿沙盘的来访者,一般要比用干沙盘的来访者多需要一些时间。关于沙盘游戏的结束和拆除,我们可以做如下的分析和讨论。1.“自然”的结東

正常的情况下,来访者自己会告诉我们,不管是用语言的表达还是非言语的行为,他已经完成了他的沙盘。常出现的表达往往是:“嗯,好了。”“好吧,就这样吧。”“你看,我做完了。”对此我们称之为“自然的结束”。

这个时候,一直坐在沙盘旁边守护与观望着来访者的一举一动,观望着整个沙盘游戏过程的分析师,仍然会与来访者一起,再仔细地“阅读”沙盘,呈现体察与观照的作用,与来访者一起感受和体验沙盘中的意义,而不是马上就去询问、解释或评价。

尽管沙盘游戏被称为“非言语治疗”,但并非意味着彼此没有语言的交流。当沙盘游戏自然结束的时候,来访者往往会描述他的感受,讲述沙盘中所包含的故事,或者是询问分析师一些他想进一步了解的象征或意义。若是来访者没有说话,或者是来访者直接向分析师提出了问题,那么根据当时具体的情况,分析师也会给予适当的回应。比如,若是来访者很久没有说话,而分析师认为已经可以做语言的交流了,一般会说:“怎么样,感觉如何?”(一起看着沙盘)“你想对这沙盘说些什么吗?” 若是来访者直接提出了问题,比如,来访者想让分析师解释某一个沙盘模型的象征或意义,或者是让分析师来评价沙盘,那么,面对类似的情景,分析师多是用专业的态度来予以回应。比如,来访者指着某一个沙盘模型问分析师是什么意思,那么分析师一般会说,“你对它的感觉如何?”“它让你想到什么了吗?”

在这样回答的背后,包含着分析师陪同来访者做自我探索的原则.不是把自己的理解或看法给予来访者,而是让来访者获得其自己的感受和理解。2.“非自然”的结束

有两种情况,会导致沙盘游戏的“非自然”的结束。一是时间的因素。若是来访者在约定时间的前5分钟还没有结束其沙盘游戏的迹象的时候,分析师就要用适当的方式来“提醒”来访者,让他知道这次的沙盘游戏在5分钟之内需要结束。另外一种情况,是分析师觉察到了来访者在沙盘游戏过程中的“过激”反应,或者是被引发了尚不能承受的创伤或无意识内容,这时同样需要用适当的方式来中止来访者的沙盘游戏。

即使是采取适当的方式,沙盘游戏的非自然结束都可能会带给来访者某种挫败或挫折感,因而需要分析师更加敏感和细心地来应付和处理。比如,来访者沙盘游戏活动的延迟,若是由“移情”因素引起的话,也即来访者不想离开沙盘游戏室,想与分析师多一些时间相处,那么,就可以在适当的时候,针对移情本身来做分析治疗的工作。面对在沙盘游戏过程中出现过激反应的来访者,则需要考虑加强医患的关系,增加来访者的现实感,提高来访者的意识承受力等方式来获得有效的进展。

即使是非自然的结束,但是在来访者和分析师彼此都接受了“结束”或“完成”了沙盘游戏,尤其是沙盘游戏中的“工作”或“作品”的时候,那么我们在自然的结束中所提出的分析与讨论,包括彼此交流的方式等,都同样具有参考的意义。3.沙盘的拆除

在沙盘游戏的过程中,以及在沙盘游戏的教学中,“沙盘的拆除”往往是一个容易被忽视的内容。但若是处理不当,则可能会给来访者造成心理上的阴影,给整个沙盘游戏治疗带来负面的影响。

有这样一个真实的例子。在广州某幼儿园的沙盘游戏室,老师在陪同孩子做沙盘游戏。孩子玩得很认真,在沙盘上搭建着她心中的想象……但是这孩子的动作慢了一些,几乎是到了下课的时间,才在沙盘中放人了似乎是最后一件小玩具。陪同她的老师看时间到了,就忙着去收起摆在沙盘里的玩具……但就在这时,这位平时温顺的小女孩,用尽力气吼叫了起来:“你不要动我的沙盘。”当时在场的所有的人都被此情景深深地震动。

在沙盘游戏的过程中,沙盘之于来访者,是源白其内心深处的表白,是他/她心目中的世界。因而,看似一个不甚起眼的玩具或模型,实际上已经包含了,或者是被注入了深刻的意义和价值。所以,作为分析师,以及沙盘游戏治疗的学生,尤其需要尊重这沙盘的特殊意义和象征。正是考虑到来访者在沙盘中所倾注的心力和感情,所表达的属于其自己的内在世界,因而作为分析师,一般是不当着来访者的面拆除沙盘的。

在沙盘拆除之前,需要拍照记录。可以告诉来访者,若是他愿意,也可以将拍下的沙盘照片送给他。记录下来的沙盘图片,在整个沙盘游戏过程中具有十分重要的作用,它们不仅是分析师工作的需要,也是来访者沙盘游戏心路历程的纪念。

ps制作游戏海报教程 篇5

效果图

提示下一页:素材、PS技法应用以及海报创作思路

素材、PS技法应用以及海报创作思路:

A:创作思路。

本次海报教程笔者选择了人气动画《火影忍者-疾风传》做为素材,根据自己的想像原创一了这款海报。动画版已经播出到《木叶全城封锁》这个部分,一场血战不可避免,鸣人会不会再次利用九尾的力量呢?一切都拭目以待,现在我们就可以根据这一线索,将海报的背景设定为木叶城和九尾,海报的正中央是新卡 卡西班和最近剧集里频繁出现的阿斯玛,几人在火焰的包围中,鸣人释放出螺旋丸,海报的整体给人一种大战一触即发的感觉,临场感,就是本海报需要表达的主 题。

B:PS技法一览。

羽化、动感模糊、高斯模糊、径向模糊、云彩制作海报背景。

抽出,填充、加深减淡涂抹工具制作升腾火焰。

移花接木、蒙板、边缘羽化、图层混合模式制作中央任务组。

出样图后,后期调整色彩平衡、色阶、局部模糊来追加海报的质感。

C:素材的收集。

本次需要用到5张火影的素材,网络上有很多种,但要在收集的时候需要根据人物的姿势和角度来进行收集。

素材1

素材2

素材3

素材4

素材5

素材6

素材收集完毕,大家整理下思路,然后跟我一起学做这款招贴海报。

说明:本次海报教程所用的素材图片版权属于原作者和单位,本教程之做PS爱好者交流学习之引用。

海报合成过程:

背景的制作

A:首先打开PS新建主文件,大小550X692像素(教程演示用尺寸。)如想打印,请选择A4大小,300分辨率。将前后景色,分别设置为 712C2C和020101,然后执行滤镜—渲染--云彩,随后按CTRL+F五次,然后执行滤镜—渲染—分层云彩一次,然后执行—图像—调整,分别调整 色阶,色彩平衡和饱和度,具体数值可自由设定,将画面提亮即可。如图1。

图1

B:打开素材1,用“多边型索套工具”将素材图一分为二,下面木叶城市的部分,放到主文件下面,上面的九尾狐狸,放到主文件的最上面。如图2。

图2

这个时候就要用到“羽化”了。“羽化”的作用就是使图像的边缘部分稍微模糊,使之能和背景更完美的融合在一起,在招贴海报的合成中,羽化和图像 蒙板是被利用的最多的PS技法。用多变型索套工具分别勾勒如图3示例,然后按下CTRL+SHIFT+I进行反选,之后羽化15像素后,按CTRL+X删 除,就得到了半透明状态的狐狸和城市,和背景组合在一起,就已经出一些味道了。(小贴士:好多朋友找不到羽化功能,在你勾勒一个区域后,按鼠标右键在弹出 的菜单中就有“羽化”的选项)。如图3和3-1。

图3

图3-1

C:飞火的制作。

现在来制作旋涡鸣人等人身下起伏和升腾的火焰部分。首先用“矩形选框”在木叶村上方来出一个合适的选区,然后编辑—填充-颜色4E0306,之 后在该举行上下放分别填充白色渐变,以和背景颜色进行区分,见示例图4中的步骤2。完成以后,新建立一层,将前景色调整为3F0202,选画笔工具,3 号,大小2像素,按照示例图5中的步骤三,画出一个放射状的线条图,画好之后执行菜单—滤镜—模糊—动感模糊,角度选82度,距离选23像素,这样这个放 射状的图就被打三,然后选“涂抹”工具,将强度设定为25%,沿着放射状红色的边缘进行涂抹,使之“更加的飘逸,更加的升腾”总之要有一种被“聚集又散 发”的感觉,熟悉火影漫画的朋友应该知道,旋涡鸣人在使出“螺旋丸”的时候,周围的空气被卷动而形成风,这里要做的就是要将“火“卷动。

图4

现在要修饰一下刚刚完成的飞火,这里笔者选用了一个刺青素材,打开刺青素材,用“魔术棒”工具去掉背景,执行菜单—图像—调整—色阶,将黑色的 原图调整为浅色,然后按CTRL,鼠标点此层,填充金色,随后将此层的混合模式调整为线性加深,这样,升腾火焰中就有了类似印记的元素存在。如图5。

图5

经过以上步骤,背景差不多完成了,一些追加效果需要在完成人物的制作后

才能开始制作。

人物的制作

A:新建立一个图层组(方便归类和修改),命名为“人物”,然后在本组内新建一层,打开素材2,用“多边型索套工具”将旋涡鸣人勾勒出来,然后 复制到刚刚新建立的那一层上,然后按CTRL+T调整大小,然后将其放到正中央的地方。然后用“多边型索套”工具沿着人物的边缘进行勾勒,完成以后按 CTRL+SHIFT+I进行反选,然后羽化8像素,之后按CTRL+X进行删除,然后执行菜单—图像—调整色相/饱和度,将饱和度调整为—10左右(在 螺旋丸蓝光的映射下,鸣人橙色的衣服会变淡),再降低一下不透明度,这样就会更加突出接下来要制作的“螺旋丸”了。这样,旋涡鸣人边缘的部分就能和背景融 合。如图

6。

图6

B:旋涡鸣人的人物加强处理。为了突现出人物的核心,鸣人身体颜色需要减淡甚至降低不透明度,但人物的脸是要被“螺旋丸”的蓝光所反射的,因此 脸需要加强亮度,在同一图层上不方便修改,因此这里将鸣人的图层复制一层,将上层的鸣人脸部以下的部分勾勒后进行羽化,然后在脸的上面新建立一层,用画笔 随意涂抹颜色“电光蓝”,然后将图层模式设定为“柔光”这样,画面就突出了脸部被强光反射的效果。如图7。

图7

C:光线补充制作。

既然本海报名为“木叶·火”,那么火元素是就是要被强化突出的,现在制

作“燃烧的火柱”。

先建立一层用矩形选框竖拉一条细细的线,填充颜色FCBE78,然后复制两层,按照示例图中步骤二的演示进行位置调整;然后执行菜单—滤镜—模 糊—动感模糊,角度:90度,距离:25像素;然后将本层的不透明度调整为60%,在用“多变型索套工具”将盖住旋涡鸣人脸的那部分勾勒出来,羽化3像素,CTRL+X删除;然后新建立一层,用画笔 选颜色3F0202将三道颜色涂抹一下,执行菜单—滤镜—模糊—高斯模糊,大小1.5即可,这样火焰光柱散发红光的视觉

补充就做完了。如图8。

图8

D:其他人物的制作。

在这个部分的制作中,因为人物素材都是比较光亮的,为了配合海报整体的黑暗风格,还有光影原理,所以在羽化好每一个人物的时候,要在人物的上方加

一层黑色渐变。

佐井的制作,打开素材4 用“多边型索套工具”勾勒出人物头部加一点身体,然后勾勒出边缘,羽化8像素。这里要注意的是,因为鸣人层是不透明度60%,所以佐井在鸣人身后的部分要 删除掉。然后新建立一层,用3号画笔在人物脸的侧面随意涂抹,然后进行一下高斯模糊即可。如图9。

图9

其他人物的做法都和这个一样,但要注意的是,最右边的猿飞阿斯玛是抽烟的,素材图片上没有烟,这个时候需要找来一张烟的素材,移花接木上去就好。

E:火焰的制作,这里用到了“抽出”。

打开素材6,执行菜单—滤镜—抽出,用画笔把火焰部分都“刷绿”,然后将右边的“强制前景色”勾选上,这样半透明状态的火焰就被抽出了,然后将 其复制粘贴到主文件中,用“多边形索套”工具勾勒出合适的部分,放置到鸣人的左右边,然后按住CREL,鼠标点刚抽出的火焰层,填充红色,然后再在中心部 分填充黄色,作为火焰的补充。如图10。

图10

螺旋丸的制作。这个部分比较简单,新建立一层,用椭圆工具,按住SHIFT来出一个正圆,CREL+ENTER转化成选区,填充白色,然后选1 号画笔,颜色选蓝色,在圆的中心随意点几下,然后进行高斯模糊即可。螺旋丸周围的旋转光,新建立一层先用白色画笔画几条直线,然后执行菜单—滤镜—扭曲— 旋转和扭曲,将数值调大,然后再对其进行高斯模糊即可!

文字的制作

文字这里笔者选用了“迷你繁智楷”这个字体,写出“木叶火”三个字,然后分别复制一层,然后将其删格化,之后在进行一下“动感模糊”即可,这样文

字就不显示的单调。

收尾工作

上一篇:经典加油站站长述职报告下一篇:蒙古族喝酒有什么礼仪习惯