Unity高级项目实战课件06全方位滚动射击游戏.pptVIP

Unity高级项目实战课件06全方位滚动射击游戏.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 4.3锁定的管理 为了防止对同一架敌机锁定两次以上,首先需要对大量敌机做出明确区分:“噬星者”中,同一种类的敌机会同时大量出现:这样一来,只通过“预设类型”是无法对其进行区分的。 Unity中允许对对象设置实例ID(instance ID)。每个对象的实例ID各不相同,不同的对象不能同时使用同一个实例ID。 这种不会重复的特性称为Uniq。Uniq”一词在英文中的本意是“唯一的”。“唯一的值”就是“不会重复的值”,实例ID就是这种“唯一的值”。“噬星者”中就是使用这样的实例ID来管理已经锁定的敌机的。 当前已经锁定的敌机的实例ID都被记录在锁定列表中(图)锁定列表的槽数等于一次能够锁定的敌机的最大数量。 下面我们以锁定两架敌机的情况为例来说明锁定列表的工作流程。请读者参照下图进行理解。 现在玩家飞机前方有两架敌机,实例ID(以下简称为ID)分别力10和11。 (1)玩家飞机一边发射索敌激光,一边稍微向左旋转,这时ID = 10的敌机进入激光的轨迹内,因此从锁定列表中查询ID = 10的敌机,在锁定列表中没有ID = 10的记录,意味着该敌机未被锁定过,于是就锁定该机,并将ID = 10记录到锁定列表中。 (2)玩家飞机在ID = 10的敌机被锁定的了位置继续左转,锁定ID = 11的敌机后也把ID = 11记录到锁定列表中。 (3)锁定ID = 11的敌机后,玩家屹机在该处停下,开始向右转,索敌激光在碰撞检测的过程中将再次命中ID = 11的敌机。但是因为锁定列表中已经存在了ID=11的记录,所以不会再次对其执行锁定处理。这是避免对同一对象进行多次锁定的机制中最关键的地方。 (4)玩家飞机向锁定的敌机发射制导激光。制导激光击中ID=10的敌机后,从锁定列表中删除ID=10的记录。如果忘记删除,就可能会造成锁定列表的存储空间不足而无法锁定敌机。因此在击毁敌机后一定要将相应记录从锁定列表中删除。 了解了锁定列表的工作流程后,让我们看看实际的代码。 4.3锁定的管理 ScoutingLaser.Lockon方法在ScoutingLaserMeshController的OnTriggerEnter中被调用。collider参数也是通过OnTriggerEnter直接传人。 (a)首先判断和索敌激光的碰撞区域(触发器)发生碰撞的对象是否为敌机。如果是敌机,则取得该对象的实例ID。 (b)接下来加上已锁定的敌机数量。如果锁定列表中已经含有指定的实例ID,也就是说敌机对象已经被锁定过,IncreaseLockonCount方法将返回false。当锁定数量达到了允许的最大值时 ,也进行同样的处理。如果函数返回true,则意味着该敌机对象未被锁定过,处理将继续进了。 (c)在锁定列表中,取得记录新锁定的敌机的位置,(锁定编号)。如果锁定列表中已没有空位,getLockonNumber方法将返回 -1。为已经通过IncreaseLockonCount函数检查过允许锁定的址大数量,所以此时锁定列表中一定存在空位,不过为了增强代码的健壮性,我们依然将该错误检查添加到代码中。 4.3锁定的管理 4.4小结 现在读者应该能够理解实例ID的用处了吧。“噬星者”中为了管理锁定的敌机,使用了“记录处理过的对象”这一实例ID的典型用法。在“需要对大量同类型的对象进行区分”的情况下,往往都可以使用实例D来解决问题。 5制导激光 5.1关联文件 LockonLaserMotion.cs 5.2概要 “噬星者”中,敌机一且被锁定就无法逃脱,一定会被制导激光击中这是一种非常优秀的攻击武器。如果从武器的性能来考虑,最好使激光朝着敌机直线匕去,不过考虑到游戏的画面表现效果,我们使其沿着曲线向敌机飞去。 下面我们对这种兼顾性能和视觉效果的制导激光的制作方法进行说明。 5.3根据TrailRenderer生成网格 首先我们来对显示制导激光需要用到的TrailRenderer组件进行讲解。 制导激光像彗星一样拖着长长的尾巴显示在画面上。虽然看起来好像有细长的网格,但事实上激光前端的对象并没有使用用于显示的MeshRenderer。使用了TrailRenderer的对象在移动时,会像图6.12那样沿着运动轨迹自动生成细长的网格。当然它也支持贴图。 图(1)是使用了TrailRenderer的 制导激光在游戏中的画面表现, (2)是将其用线框图显示的结果。可 以看到,沿着制导激光的轨迹生成 了很多细长的网格。 5.3根据TrailRenderer生成网格 5.4制导激光的移动 根据上文可知,如果使用了TrailRenderer,轨迹的绘制就会变得比较容易。在位于头部的对象动起来后,TrailRendere:就会沿着其移动的路径

文档评论(0)

3344483cc + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档