在下Simba,有何贵干!新一期的游戏又出炉了(明明就是个Demo啊喂),这次的游戏比以往都简单(你别骗我),但是比以往的都好看(Excuse me?),没错,那就是动画!这一期的游戏使用了以往都没有使用过的动画系统,而且用了别人模型(不要脸)。
Garen模型:http://pan.baidu.com/s/1i5exKNV
使用前请将所有模型和动作设置成Legacy动画, inspector -> Rig -> Animation type -> Legacy -> Apply button。
先来看看这酷炫的效果吧:(这...这莫非是...盖伦?)
游戏的规则很简单,玩家控制盖伦击打完场上的7个球游戏结束,并给出最终用时。
游戏的类图:
(说好的很简单呢?我怎么看不懂)不急不急,看上去很复杂,其实只有3个脚本要写,话说这图可能还有错,刚学的UML作图。
步骤说明:
一、场景布置
场景布置总是游戏开始制作时必须考虑和完善的事情,在打代码前得脑补出游戏正常运行时的情景。我设计的游戏摄像机是不动的,玩家可以在固定区域内通过WASD移动,点击鼠标左键进行攻击。当区域内所有小球都被击打消失后,游戏结束,显示玩家用时。
首先把玩家Garen拖入场景中,reset位置。新建4个正方体和1个平面,通过拉伸和位移组成一个方块区域:
给玩家添加刚体组件和碰撞盒,碰撞盒采用胶囊体:
新建1个UI Text对象,并将其定位在屏幕中央,用于显示玩家的最终用时:
场景中的所有对象:
二、玩家动作
OK,可以开始写代码了。想从最直观的写起,那么就先写玩家的控制吧。玩家有3个动作,分别是Idle、Run、Attack。Idle在Start时就播放,Run需要在Update中检测键盘输入,可以使用GetAxisRaw获得WASD的方向。Attack是比较复杂的动作,通过在动作过程中注册回调函数,可以使得在攻击动画播放过程中触发这些函数,比如AttackHit函数,以及StopAttack函数。前者判断有没有击中物体,并广播击中消息。后者使玩家播放站立动画(攻击动画结束后站立)。
using UnityEngine;
using System.Collections;
public class GarenMovement : MonoBehaviour {
Animation ani;
AnimationState idle;
AnimationState run;
A