游戏截图:
对象树:
这个游戏大体可以分为 动画,判断 两个部分,重要说明注释在了代码里
AnimationLegacy
用来控制动作的,和监听鼠标键盘,这里和后面的Judge一起形成了 观察者模式
using UnityEngine;
using System.Collections;
using Com.mygame;
public class AnimationLegacy : MonoBehaviour {
//define animation control object here
private Animation ani;
private AnimationState attack;
private AnimationState idle;
private AnimationState run;
public bool isAttacking = false;
private SenceController sc;
// 注意这里,在这里我们用static定义了一个全局静态时间,在Judge中使用
public delegate void AttackHandler(GameObject obj);
public static event AttackHandler AttackEvent;
// Use this for initialization
void Start () {
ani = GetComponent<Animation> ();
attack = ani ["Attack1"];
idle = ani["Idle"];
run = ani["Run"];
idle.wrapMode = WrapMode.Loop;
ani.Play (idle.clip.name);
sc = SenceController.getInstance ();
}
// Update is called once per frame
void Update () {
float speed = 10f;
// move
if (Input.GetKey(KeyCode.W)) {
//因为是用键盘控制的,所以无法转向
transform.Translate (Vector3.forward * Time.deltaTime * speed);
sc.setIsAttack (false);
ani.CrossFade ("Run");
} else if (Input.GetKey(KeyCode.A)) {
transform.Translate (Vector3.left * Time.deltaTime * speed);
sc.setIsAttack (false);
ani.CrossFade ("Run");
} else