Unity高级项目实战件02迷你拼图.pptVIP

  1. 1、本文档共45页,可阅读全部内容。
  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文档。上传文档
查看更多
Unity高级项目实战件02迷你拼图

所有网格块都为正方形,且都应当确保能够容纳下拼图碎片。另外,由于后续步骤中将在网格内移动拼图碎片,所以还需要在确保整体网格不溢出画面的前提下适当放大网格的尺寸. 之所以像这样把拼图碎片放置到网格中,是为了避免出现碎片之间彼此重叠的状况。 接下来随机打乱各个碎片的排列位置(图) * 4.4改进策略 在第一个步骤中,我们将碎片从左上角开始依次放入了网格中。而第二步就是打乱各个碎片的排列顺序。利用随机数选出两个网格,然后交换其中的碎片,空白的网格也可以参与交换。 做到这里,前面我们做出的需求分析中,“碎片之间彼此互不重叠”、“碎片分散于整个画面”和“随机分散各个碎片”就已经基本得到了实现。不过从程序实际运行效果来看,很容易发现拼图碎片被规则地排列在了网格上。我们得想办法让这种随机分散的效果更真实。 在第三个步骤中,我们让拼图 碎片在网格中随机移动(图)。 最初的步骤中增加网格尺寸的 用意就在于为这里的碎片移动做准 备。如果网格的尺寸太小,将无法 移动碎片,反之如果太大,则会令 碎片之间过于松散。请读者结合拼 图碎片的大小和画面整体的尺寸, 调整网格尺寸为最佳值。 因为碎片被限制在了各个网格内,所以不会出现相邻碎片之间重叠的现象。这也是将碎片排列在网格上的原因。 * 4.4改进策略 最后,为了不让玩 家看出碎片排列的规律 性,稍微将拼图网格整 体旋转一定的角度(图). 虽然旋转了整体的网格,但是需要保持拼图碎片自身的角度不变。 下面,我们结合实际的代码梳理一下这个流程。 * 4.4改进策略 * (a)将拼图碎片按顺序放入网格中。用数组piece_index[]存储各个网格中碎片的编号。值 为-1时表示该网格为空。 (b)随机选出两个网格,交换其中的碎片。 (b1)请注意在选取网格对象时,并非只是简单地生成2个随机数。这里的做法是,从第一个网格开始,依次为每个网格从其之后的网格中随机选择一个交换内容的对象。相对于两个要交换内容的网格对象都通过随机数来指定,这种做法能减少循环的次数,效率更高。 * (c)确定了用于放置碎片的网格后,求出实际的XZ坐标。只要知道整体网格的中心坐标 和各个小网格的尺寸,这个计算过程应该很简单。 (d)接下来,在网格内将拼图碎片随机移动一定的位置。这里我们不使用随机数,而使用 一组呈周期性变化的数值。 (d1)更新“呈周期性变化的偏移值(位置坐标差)’’。每次加上offset_add,结果值将在-offset_cycle/2.0f ~ +offset_cycle/2.0f之间波动。最终的值是使用多组数据反复试验得出的,没有什么理论依据。 (e)最后将网格整体进行旋转。和(d)的处理相类似,每次旋转的角度值将从一组呈周期 性变化的数值中获取。这是为了尽量避免在反复操作中使用和上次相同的数值。旋转的角度在(f)处被更新,以供下次使用。 * 4.4改进策略 在完成上述各步骤后,各拼图碎片是否如我们所期待的那样随机分散开了呢?让我们来验证一下(图)。 通过点击“重来”按钮,可以对拼图碎片重新“洗牌”。该按钮原本是为玩家重新开始游戏而设置的,但是考虑到它对制作移动碎片的程序也会起到一定的作用,于是就将其提前设置了出来。 请读者多点击几次“重来”按钮。已经了解了其中缘由的人可能会隐隐约约地看到网格,但不知道的人是完全注意不到的。 * 4.4改进策略 4.5小结 实现“可控随机化”的核心思想在于,先确定好大致的原则,再向那些能够随机控制的参数代人随机数。另外,除了使用随机数之外,有时候像本例这样采用一组呈周期性变化的数值来进行“伪随机处理”也能达到不错的效果。 * 5游戏对象和组件的关系 2.5.1关联文件 PazzleControl.cs PieceControl.cs * 5.2概要 这里暂时改变一下讨论的内容,对Unity中游戏对象(GameObject)和组件(Component)的关系进行解说。 大家应该都知道虚拟形象(avatar)吧。它是用户在网络上的分身,可以通过它和其他用户进行交流。用户可以按自己的喜好为一个基本的角色添加各种道具来设计其形象,这就是所谓的定制(customize)。很多用户都特别热衷于各种应用和游戏中的虚拟形象的定制功能。 这里我们以虚拟形象为例来说明Unity中游戏对象和组件的关系。最后还将介绍在“迷你拼图”中使用到的组件。 * 5.3虚拟形象(游戏对象)和定制(组件) 虚拟形象一般包含基础的角色形象和用于定制形象的各种道具。 我们暂且将基础的角色形象称为素体。有些应用中会准备好几种素体,不过一般都是比较简单的设计。 用于定制的道具则有衣服、饰品和发型等,有些应用中道具甚至多达到百 种以上。把各

文档评论(0)

135****6041 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档