RPG游戏制作概念——NPC.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RPG游戏制作概念——NPC 说明:文档是FLASH9,脚本是AS3。我是一边研究AS3的功能一边写下这些。就因为对AS3不熟,更应该用AS3来写,这对自己也是一种自我价值提升的表现。 一个游戏,特别是传统的RPG,NPC是不可缺少或缺的。反之,需要NPC的地方是很多的,当然,这需要看游戏剧情的需要。 代码的逻辑,将会用到面象对象。面向对象不是把问题复杂化,而是把问题的实现简单化,觉得面向对象困难,那是在写代码的过程需要考虑到多方面,使自身的思维跟不上。这会让人觉得很困难。实现上,使用面向对象,在维护及更新是绝对容易的。 而面向过程,是比较符合人的思维罗辑方式,感觉就是人一步一步地向目标走。而对开发游戏来讲,就是随着游戏的剧情制作。实际上,两种方法的开发的结果都是差不多的(很不负责任的说法……)。 下说举个例来说明面向对象的用处: 在AS2中,没有画矩形的方法,通常,我们会用一个函数来创建 如: Function createRect(x,y,wdith,height){ Return ….//返回一个矩形的元件 } 而我们需要创建矩形的时间,就直接用createRect(x,y,wdith,height)方法来创建就可以了。这其实也是一种面向对象的使用方法。 而使用自定义类来创建这些方法会更好些。同时AS3也是趋向使用类文件。 这里稍微对面向对象作一些解释,是因为我将会用到这些方法,会的人当然不用看。下面进入主题。 NPC其实就是(MovieClip,以下简称MC),在FLASH内部来说,NPC具有以下一些特征(或许会更多): 深度:不管是角色还是NPC,都要有一个深度,不然会出现角色踩在某些NPC身上,或者被NPC踩头上等状况; 与其他NPC不同:当鼠标移到该NPC身上,出现一些吸引人注意力的待点,如透明度减少;而当我们把鼠标移开NPC,角色的特征消失; 属性:X坐标Y坐标等; 点击事件:通常是实现对话的效果,点击NPC就发生对象; 代码实现: 定义类名:NPC 构造体:NPC() 添加NPC函数:addNPC(box:MovieClip,object:*,npc_x:uint,npc_y:uint,npc_fun) box是存放NPC的容器, object是库中的类名(2。0是链接名), npc_x和npc_y是坐标, npc_fun是该NPC被点击后触发的事件 还有两个特征显示的事件,鼠标移到NPC身上及鼠标从NPC身上移开两个 这里简单地用透明度来作为特征。 还是看看整个类文件吧: package { import flash.display.MovieClip; import flash.events.MouseEvent; public class NPC extends MovieClip { public function NPC() { } /* box是存放NPC的容器,object是库中的类名(2。0是链接名),npc_x和npc_y是坐标,npc_fun是该NPC被点击后触发的事件 */ public function addNPC(box:MovieClip,object:*,npc_x:uint,npc_y:uint,npc_fun) { var npc=new object(); box.addChild(npc); npc.x=npc_x; npc.y=npc_y; //trace(CONSTAND.lower_depth) var temp_y=npc.y+CONSTAND.lower_depth; if (box.numChildrentemp_y) { new Depther(box,temp_y); } box.setChildIndex(npc,temp_y); npc.addEventListener(MouseEvent.MOUSE_DOWN,npc_fun); npc.addEventListener(MouseEvent.MOUSE_OVER,npc_over); npc.addEventListener(MouseEvent.MOUSE_OUT,npc_out); return npc; } //鼠标移到该NPC身上,就降低透明度.也可以更改其色彩平衡,反正就是显示与其他非选择NPC不同 private function npc_over(eve:MouseEvent) { eve.currentTarget.alpha=.8; } //鼠标移出NPC,透明度恢复 private function npc_out(eve:Mous

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档