U3D 0822 碰撞体触发

来源:互联网 发布:乐视网络电视app 编辑:程序博客网 时间:2024/06/03 19:01

动作系统

模型推荐格式 FBX
Animation组件
面板

    旧动画系统组件
    属于新动画系统的子集
    使用帧动画
    Rig标签下选择Legacy
    参数
      Animation 默认播放的动画片段
      Animations 所有可以播放的动画片段
      Play Automatically 勾选后,游戏开始自动播放
      Animate Physics 是否参与物理运动
      Cull Type 什么时候渲染

        Allways
        Based On Renderers 摄像机能看到时渲染

    Animation m_pAni;
    m_fAni.CrossFade("Walk");动画过度,避免卡顿现象

    方法
    bool Play("动画片段的名称");
    bool Play("动画片段的名称",PlayMode.StopAll);
    bool CrossFade("动画片段的名称",int fadeLenth );百分比融合 ,从后面算
    bool CrossFadeQueued("动画片段的名称",int fadeLength,QueueMode);
    AnimationState this(string name);

    PlayMode 枚举


      StopAll
      StopSameLayer
      QueueMode
      CompleteOthers
      PlayNo
      StopAll
      StopSameLayer

    AnimationState

      name 动画片段
      clip 动画片段
      length 动画片段长度
      speed 动画片段播放的速度 >1加速播放 0~1减速播放

      Animator 新动画组件
      在模型面板中 修改缩放
      根节点

      using UnityEngine;using System.Collections;public class playanimation : MonoBehaviour {    Animation m_pAni;    ENUM_MOUSTER_STATE m_emState= ENUM_MOUSTER_STATE.stand ;    CharacterController m_pController;    private float m_pVectical;    private float m_pHorizontal;    public  float m_pMoveSpeed =30.0f;    public float m_pRotSpeed = 2f;    void Awake(){        m_pAni = GetComponent<Animation> ();        m_pController = GetComponent<CharacterController> ();    }    // Use this for initialization    void Start () {        m_pAni.Play (ENUM_MOUSTER_STATE.stand.ToString ());    }    // Update is called once per frame    void Update () {        m_pVectical = Input.GetAxis ("Vertical");        m_pHorizontal = Input.GetAxis ("Horizontal");        if (m_pVectical > 0) {            m_pController.SimpleMove(transform.forward*m_pMoveSpeed*Time.deltaTime);            ChangeStateTo(ENUM_MOUSTER_STATE.walk);        }        transform.Rotate (0, m_pHorizontal * Time.time * m_pRotSpeed,0);        if (Input.GetKeyDown (KeyCode.Space)) {            ChangeStateTo(ENUM_MOUSTER_STATE.atk1);        }        if (Input.GetKeyDown (KeyCode.Alpha0)) {            ChangeStateTo(ENUM_MOUSTER_STATE.death);        }        if (Input.GetKeyDown (KeyCode.Alpha3)) {            ChangeStateTo(ENUM_MOUSTER_STATE.run);        }        if (!m_pAni.isPlaying) {            ChangeStateTo(ENUM_MOUSTER_STATE.stand);        }    }    void ChangeStateTo(ENUM_MOUSTER_STATE emState){        Debug.Log(m_emState.ToString());        if (emState == m_emState) {            Debug.Log(m_emState.ToString());            if (m_emState == ENUM_MOUSTER_STATE.atk1){                Debug.Log(m_emState.ToString());                m_pAni.CrossFadeQueued ("atk2", 03f, QueueMode.CompleteOthers);                m_emState =ENUM_MOUSTER_STATE.atk2;                Debug.Log(m_emState.ToString());            }            return;        }         if (!m_pAni.IsPlaying(emState.ToString())) {            Debug.Log(m_emState.ToString());            m_pAni.CrossFade(emState.ToString(),0.3f,PlayMode.StopSameLayer);            m_emState= emState;            Debug.Log(m_emState.ToString());        }    }}public enum ENUM_MOUSTER_STATE{    walk,    run,    aida,    stand,    atk1,    atk2,    fly,    getup,    death}
      地扎using UnityEngine;using System.Collections;public class crush : MonoBehaviour {    Animation m_pAnimation;    ENUM_UPorDown m_pState;    void Awake(){        m_pAnimation = GetComponent<Animation> ();    }    // Use this for initialization    void Start () {    }    // Update is called once per frame    void Update () {    }    void OnTriggerEnter(){        m_pAnimation.Play (ENUM_UPorDown.Up.ToString());    }    void OnTriggerExit(){        m_pAnimation.Play (ENUM_UPorDown.Down.ToString());    }}public enum ENUM_UPorDown{    Up,    Down}
      0 0
      原创粉丝点击