(Unty3D自带例子AngryBots的分析.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  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文档。上传文档
查看更多
(Unty3D自带例子AngryBots的分析

研究一下Unity3d自带的AngryBots项目,了解基本的游戏运行机制:1. 人物的动作控制逻辑***Player对象***[外形]Player对象里有一个对象具有Skinned Mesh Renderer组件,该组件使用的Mesh名为main_player_lorez。类似的还有表达武器的,名为main_weapon001的GameObject。[操作]: (InputManager)**移动**定义:移动在InputManager里添加了2种操作方式:水平移动,名为 Horizontal垂直移动,名为 Vertical并设置了一些属性,比如对应的按键,加速度,类型等等。在脚本(PlayerMoveController.js)里,通过Input.GetAxis(“Horizontal”)? 和 Input.GetAxis(“Vertical”)获得玩家的按键状态转化成的运动方向。并储存在MovementMotor.js脚本定义的movementDirection变量里。实现:Player添加了RigidBody组件,该组件提供了按物理规律改变GameObject的Transform的能力。在FreeMovementMotor.js脚本里,定义了一些参数,用于和movementDirection一起,计算出作用于RigidBody对象上的力(Force)。角色就开始向指定方向移动了。**面向(facingDirection)**直接使用Input.mousePosition作为屏幕坐标,用角色所在位置定义一个平面,求得射线焦点,将该角色所在位置到该点的方向作为面向。并储存在MovementMotor.js脚本定义的facingDirection变量里。[动作播放]:Player Animation(Script)(PlayerAnimation.js)var moveAnimations : MoveAnimation[]; 因为是public变量,所以可以在inspector中直接修改,例子中定义了6个动作 run_forward/run_backward/run_right/run_left 和 idle/turn 。由于这个例子里角色的动作定义了6个clip,和上述6个动作名称一一对应。动作的播放不是在转向发生,或是ASWD按下时发生的。该脚本对比Player的Transform在2帧内的变化,根据面向、移动方向,计算出具体播放哪个动作。同时,有动作混合逻辑,使得动作的切换是有过程并且平滑的。上半身转动到一定角度,下半身也会调整,这个也是逻辑做的功能。2. 从射击到命中的整个处理流程,射击特效的制作原理[创建子弹]Cache对象?ObjectCache类?var prefab : GameObject;?var cacheSize : int = 10;?Spawner.js?var caches : ObjectCache[];?function Awake () {?caches[i].Initialize ();?}?static function Spawn(…);?static function Destroy(…);有一个对象cache池,即为objectCache对象的实例,该对象初始化固定数量的对象实例,并顺序的提供对象实例。Spawner对象按Prefab类型将多个ObjectCache对象组织起来,并通过Spawn 和 Destroy 函数提供统一的接口来创建和销毁各种对象实例–例如子弹,导弹。[发射子弹的时机]WeaponSlot?TriggerOnMouseOrJoystick.js?public var mouseDownSignals : SignalSender;?public var mouseUpSignals : SignalSender;?SignalSender.js?public function SendSignals (sender : MonoBehaviour)?public var receivers : ReceiverItem[];?AutoFire.js?function Update ()?if (firing) {?if (Time.time lastFireTime + 1 / frequency) {?var go : GameObject = Spawner.Spawn (bulletPrefab, spawnPoint.position, spawnPoint.rotation * coneRandomRotation) as GameObject;??WeaponSlot(GameObject)对象有一个脚本组件 , 名为TriggerOnMo

文档评论(0)

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

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

1亿VIP精品文档

相关文档