研究一下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) varmoveAnimations : 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; varcacheSize :int = 10; Spawner.js var caches : ObjectCache[]; function Awake () { caches[i].Initialize (); } static function Spawn(„); static function Destroy(„); 有一个对象cache...