VI实践报告2.docx
- 文档编号:28587744
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:20
- 大小:54.64KB
VI实践报告2.docx
《VI实践报告2.docx》由会员分享,可在线阅读,更多相关《VI实践报告2.docx(20页珍藏版)》请在冰豆网上搜索。
VI实践报告2
一、设计目的
使我们能更好的运用Director、Photoshop这些实用的软件,了解与学好企业形象设计这一门课程,可以做到理论课程与实践操作相结合,提高我们的自学能力、实践能力、创新能力,为自己增添一分能力。
二、设计主题
VI主题为"旋风科技户外广告",主要内容是对旋风科技户外广告牌的设计,与将户外广告牌放在环境里面的应用效果,两种不同的表现形式,展示出企业标识广告宣传的美感。
可以同时达到对企业的宣传,和让人们对设计的欣赏。
设计要求
制作内容:
(选择其中一项)
A.户外广告
B.灯箱广告
C.网页规范
制作要求:
1.企业名称:
自定,并根据企业特点和宣传需求进行策划。
2.作品包括:
作品平面图及作品在环境中的使用效果图。
3.作品主题明确,内容健康,创意新颖,作品风格表现符合企业特点。
4.作品需考虑印刷与实际应用要求。
5.作品存储可选格式:
“.JPG”、“.TIF”、“.GIF”。
四、设计过程
今年学校布置VI的实践,我贯穿与整个设计,在这个过程中我学到了很多在理论课上很难学到东西.对于企业形象设计也有了整体的把握。
最初是选定主题,本教程将教你制作这个游戏。
游戏的控制按键:
Player1Player2
WPunchI
SKickK
ALeftJ
DRightL
开始前的准备
第一件事情就是你需要从Macromedia获得Director8或Director8.5(译者注:
当然,使用DirectorMX也可以),它可以在PC和Mac上工作。
我是在Mac上使用Director8.5。
接着,你需要相当熟悉行为、精灵、角色成员和影片脚本这些基本概念。
开始学习这个教程前我建议花3到6个月的时间体验Director(译者注:
这是对那些还没有开始学习Director的人而言的)。
如果你懂得如何使用列表和处理程序,它有助于你的学习,不要担心它没有实质。
如果你学习Director已经入门了,强烈推荐你关注在Stormsky亚马迅书店待售的一些书。
我为学习Director使用了很多那里的图书,并且我认为这是开始学习这个学科最好的方法之一。
最后,你会感到使用AdobePhotoshop和MacromediaFireworks处理你自己的图像是很有帮助的。
我们将制作什么?
在任何游戏中计划编制总是重要的,.所以在这里让我们理清将要做些什么:
两个人通过键盘输入玩的游戏;两个角色;每个角色有踢腿和出拳两个动作;角色没有特殊的动作(尽管稍后我们将讨论增加这个功能);每个角色都有一个遭到攻击后会缩短的健康状态栏(译者注:
就是我们在玩游戏时所说的角色的血),健康状态首先减少到0的那个人是失败者;当角色走到另外一个角色后面时他们都会转身。
你知道,这是一个很简单的游戏,你将能学会制作象在任何娱乐厅中所看到的非常复杂、完整的格斗游戏。
这需要一个有设计师、艺术家、节目制作人、音效技师和其它一些有才能的人的队伍,并且要花费几个月或几年的时间来制作。
在本文的后半部分我将讨论制作这个游戏。
获得起点
首先,通过看到的和感觉到的每个事物获得一个概念,观察这个完整的游戏,搞懂你将要面对的是什么。
你会注意到由于使用了很多图像使这个游戏栩栩如生。
好,我将给你提供这些图像,使用右键选择“目标另存为”(在Mac上按住Option键并单击然后选择“Savetargetas”)保存这些图像。
这儿是背景图像。
这儿是健康状态栏图像。
这儿是玩家1胜利的Photoshop文件。
这儿是玩家2胜利的Photoshop文件。
这儿是PlayAgain?
Photoshop文件。
这儿是所有的Karin图形包含在一个演员表文件中。
这儿是所有的DJ图形包含在一个演员表文件中。
关于脚本
许多人为Director的Lingo脚本感到烦恼,因为有几种不同的脚本类型用于不同的事件。
这个教程仅使用影片和行为这两种类型的脚本。
要改变一个脚本,首先要在角色成员窗口选择这个脚本:
在这里你可以看到选择的是角色成员3这个脚本。
接着,在PropertyInspector面板的Script标签下,你可以把脚本改变成Movie、Behavior或Parent脚本(注意:
在这个教程中我们不使用Parent脚本)。
当你改变了脚本的类型你会看到这个脚本的图标也随着改变了。
按常规惯例,在整个影片中你最好由一个Movie脚本来转交事件,例如象一个键盘事件。
通常有几个Behavior脚本,必需把他们拖放到需要行为的精灵上。
.如果某些事件不能工作,可能是你没有正确的拖放它们。
装配游戏
在PropertyInspector面板把舞台改为620×240,这会给你的游戏带来友善、宽广的感觉:
接着,把所有的图像输入到InternalCast窗口:
然后输入DJ和Karin图形的演员表,我已经假设它们是一个演员表,为让影片正确播放我已设置了所有动画的注册点。
这个游戏共有3帧,在第一帧获取大多数的动作。
把背景图像拖放到精灵通道1上。
现在,我们将增加少量的代码,我相信你可以很熟练的完成。
在第一帧的脚本区双击,并增加这些代码:
onexitframeme
gototheframe
end
你将看到那个行为出现在演员表和总谱中第一帧的脚本区。
拷贝并粘贴这个行为到其它两帧:
然后让我们把背景图像从角色成员窗口拖放的精灵通道1上:
下面我们将加入角色。
现在制作这个游戏看上去很令人激动,我们将增加一个“呼吸”循环,也就是说,动画角色除了呼吸之外不作任何事情。
这是在没有按键被按下时发生的事情,其实角色更本没有做任何事情,虽然如此,影片仍然看上去很酷。
拖放Karin的第一个呼吸图像(Karin_breath_01)到精灵通道4上,并拖放DJ的第一个呼吸图像(Dj_breath_01)到精灵通道7上:
然后,我们需要把这两个图像的油墨改为Matte,这样可以去掉角色周围的白色,并且稍后可以让我们容易做碰撞检查。
当你象这样做游戏时,Matte是非常有用的,因为可以以一个像素的级别而不是以一个矩形的级别检测碰撞:
你可以看到如果你正确的设置了Matte油墨,背景图像会完全显示在角色的后面。
使用FlipHorizontal按钮把DJ翻转到面向另外一个方向,把这个角色安排在远离另外一个角色的地方,但是确保他们的脚线处于同一水平线上,否则,一个角色似乎在空中行走!
这是游戏开始的位置。
看上去有点象这样:
规划战斗
现在我们用合乎逻辑的方法处理战斗。
很多脚本让游戏进行这样的工作:
每当用户按下一个按键,角色收到这个按键消息并在影片中进行处理;操纵(例如象行走、击拳和踢腿)角色;如此看来,我们真正要做的(在简单项目中)是用键盘来控制角色,当我们按下一个出拳的按键,我们的角色将播放一个击拳的动画。
到目前为止,我们必需用心记住,我们必需有在一个新的动画开始前要等到前一个动画播放结束的机制,否则游戏会有跳动。
所以,在按下一个出拳的按键后紧接着按下踢腿的按键,应该先显示击拳的动画,一旦这个动画结束,会播放踢腿的动画。
当击拳的动画播放过程中不能用踢腿的动画取消。
获取按键
我们将制作一个处理按键的影片脚本。
.用这些代码制作一个影片脚本:
onstartmovie
clearglobals
thekeyDownScript="dokeys"
end
ondokeys
ifkeypressed("w")thensendSprite(4,#punch)--callsKarin'sindividualhandler
ifkeypressed("s")thensendSprite(4,#kick)
ifkeypressed("a")thensendSprite(4,#left)
ifkeypressed("d")thensendSprite(4,#right)
ifkeypressed("i")thensendSprite(7,#punch)--callDJ'sspritesindividualhandler
ifkeypressed("k")thensendSprite(7,#kick)
ifkeypressed("j")thensendSprite(7,#left)
ifkeypressed("l")thensendSprite(7,#right)
end
这些代码做什么事情?
嗯,我们从Startmovie处理程序开始,我们必需清除所有全局变量(这样作总是不错的开始),我们把自定义的dokeys处理程序设置给KeyDownScript,现在,每当按下键盘上的一个按键,它都会访问dokeys处理程序。
在dokeys处理程序中,我们把W、S、A和D设置给Karin,把I、K、J和L设置给DJ。
你会注意到每个按键都会发送消息给精灵4(Karin)或精灵7(DJ),每个信息让它们做出拳、踢腿、向左移动或向右移动的动作,目前为止相当合乎逻辑,是吗?
制作Karin的格斗
我们将为每个角色制作一个行为,.先给Karin制作行为,把这些代码作为一个行为并拖放到Karin所在的精灵通道4上。
propertymycounter--Karinscounterforanimation
propertymyQlist--Karinslistofquedinput
propertyhealth--Karinshealth
propertyspritenum--karinsspritenumber(4)
onbeginspriteme
sprite(spritenum).mycounter=0
sprite(spritenum).myqlist=[#blank,#blank]--Thislisthas2positions,bothblank
sprite(spritenum).health=200--fullhealth,200points
end
--ThiscodeiscalledwhentheKarin'spunchkeyispressed
--ItreplacesablankpositioninthelistwiththePunchcommand
onpunchme
ifsprite(spritenum).myQlist[1]=#blankthen
sprite(spritenum).myQlist[1]=#punch
sprite(spritenum).mycounter=0
else
sprite(spritenum).myQlist[2]=#punch
endif
end
--ThiscodeiscalledwhentheKarin'skickkeyispressed
--ItreplacesablankpositioninthelistwiththeKickcommand
onkickme
ifsprite(spritenum).myQlist[1]=#blankthen
sprite(spritenum).myQlist[1]=#kick
sprite(spritenum).mycounter=0
else
sprite(spritenum).myQlist[2]=#kick
endif
end
--ThiscodeiscalledwhentheKarin'sleftkeyispressed
--Itreplacesablankpositioninthelistwiththeleftcommand
onleftme
ifsprite(spritenum).myQlist[1]=#blankthen
sprite(spritenum).myQlist[1]=#left
sprite(spritenum).mycounter=0
else
sprite(spritenum).myQlist[2]=#left
endif
end
--ThiscodeiscalledwhentheKarin'srightkeyispressed
--Itreplacesablankpositioninthelistwiththerightcommand
onrightme
ifsprite(spritenum).myQlist[1]=#blankthen
sprite(spritenum).myQlist[1]=#right
sprite(spritenum).mycounter=0
else
sprite(spritenum).myQlist[2]=#right
endif
end
--hereiswheretheactiontakesplace.
onexitframeme
casesprite(spritenum).myQlist[1]of
#blank:
a=
(1)+sprite(spritenum).mycountermod8--8isthenumberofanimationframes
sprite(spritenum).member=(memberaofcastlib("karin"))
sprite(spritenum).mycounter=sprite(spritenum).mycounter+1--advancesthecounter
ifsprite(spritenum).mycounter/8=1then
sprite(spritenum).mycounter=0--resetsthecounteraftertheanimationhasplayed
--shiftlist
sprite(spritenum).myqlist[1]=sprite(spritenum).myqlist[2]
sprite(spritenum).myqlist[2]=#blank
endif
#punch:
a=(13)+sprite(spritenum).mycountermod6--6isthenumberofanimationframes
sprite(spritenum).member=(memberaofcastlib("karin"))
sprite(spritenum).mycounter=sprite(spritenum).mycounter+1
ifsprite(spritenum).mycounter/6=1then
sprite(spritenum).mycounter=0
--shiftlist
sprite(spritenum).myqlist[1]=sprite(spritenum).myqlist[2]
sprite(spritenum).myqlist[2]=#blank
endif
--Collision
ifsprite(spritenum).mycounter/3.0=1then
--the3rdframeofanimationistestedforcollision
ifsprite4intersects7then
sprite(7).health=sprite(7).health-8--takes8pointsoffofDJ'shealth
sprite(7).locz=8--MovesDJbehindKarin
sprite(spritenum).locz=9--MovesKarinaheadofDJ
endif
endif
#kick:
a=(9)+sprite(spritenum).mycountermod4--4isthenumberofanimationframes
sprite(spritenum).member=(memberaofcastlib("karin"))
sprite(spritenum).mycounter=sprite(spritenum).mycounter+1
ifsprite(spritenum).mycounter/4=1then
sprite(spritenum).mycounter=0
--shiftlist
sprite(spritenum).myqlist[1]=sprite(spritenum).myqlist[2]
sprite(spritenum).myqlist[2]=#blank
endif
--collision
ifsprite(spritenum).mycounter/3.0=1then
--the3rdframeofanimationistestedforcollision
ifsprite4intersects7then
sprite(7).health=sprite(7).health-12--takes12pointsoffofDJ'shealth
sprite(7).locz=8--MovesDJbehindKarin
sprite(spritenum).locz=9--MovesKarinaheadofDJ
endif
endif
#left:
a=(29)+sprite(spritenum).mycountermod10--10isthenumberofanimationframes
sprite(spritenum).member=(memberaofcastlib("karin"))
sprite(spritenum).mycounter=sprite(spritenum).mycounter+1
--thenextlinemovesKarinback4pixelsperframe
sprite(spritenum).loch=sprite(spritenum).loch-4
ifsprite(spritenum).mycounter/10=1then
sprite(spritenum).mycounter=0
--shiftlist
sprite(spritenum).myqlist[1]=sprite(spritenum).myqlist[2]
sprite(spritenum).myqlist[2]=#blank
--checktoseeifyoushouldturn
ifsprite(spritenum).loch sprite(spritenum).fliph=0 endif endif #right: a=(19)+sprite(spritenum).mycountermod10 sprite(spritenum).member=(memberaofcastlib("karin")) sprite(spritenum).mycounter=sprite(spritenum).mycounter+1 --thenextlinemovesKarinforward4pixelsperframe sprite(spritenum).loch=sprite(spritenum).loch+4 ifsprite(spritenum).mycounter/10=1then sprite(spritenum).mycounter=0 --shiftlist sprite(spritenum).myqlist[1]=sprite(spritenum).myqlist[2] sprite(spritenum).myqlist[2]=#blank --checktoseeifyoushouldturn ifsprite(spritenum).loch>sprite(7).lochthen sprite(spritenum).fliph=1 endif endif endcase end 制作DJ的格斗 这里是DJ的行为脚本,你可以看到它非常类示Karin的行为脚本。 这次我去掉了大量的注释,因此你看看能领会到什么。 .把这些代码作为行为并拖放到DJ所在的精灵通道7上。 propertymycounter propertymyQlist propertyspritenum propertyhealth onbeginspriteme sprite(spritenum).mycounter=0 sprite(spritenum).myqlist=[#blank,#blank] sprite(spritenum).health=200 end ---reciveevents onpunchme ifsprite(spritenum).myQlist[1]=#blankthen sprite(spritenum).myQlist[1]=#punch sprite(spritenum).mycounter=0 else sprite(spritenum).myQlist[2]=#punch endif end onkickme ifsprite(spritenum).myQlist[1]=#blankthen sprite(spritenum).myQlist[1]=#kick sprite(spritenum).mycounter=0 else sprite(spritenum).myQlist[2]=#kick endif end onleftme ifsprite(spritenum).myQlist[1]=#blankthen sprite(spritenum).myQlist[1]=#left sprite(spritenum).mycounter=0 else sprite(spritenum).myQlist[2]=#l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VI 实践 报告