从Assets Unity加载动画

时间:2016-06-13 15:17:24

标签: c# unity3d

我是Unity Engine的新手编程游戏。我已经搜索了#34;如何从统一的资产中加载动画"但是没有找到解决方案。

我处理对撞机的触发器

void OnTriggerCollisionEnter2D(Collision2D coll){

     if(coll.gameObject.tag = "Player"){
        //try to load animation

     }

}

如果你知道,请帮助我!谢谢

1 个答案:

答案 0 :(得分:0)

首先,我认为你很难让我的解决方案有效,因为看起来你缺乏Unity基本的东西。

OnTriggerCollisionEnter2D不是检测Trigger的有效回调函数。

OnTriggerEnter2D(Collider2D coll)正是您要找的。

其次,在onTrigger期间不要做任何事情。将动画加载到Start()函数中,然后在OnTriggerEnter2D函数中播放。

同样if(coll.gameObject.tag = "Player")应为if(coll.gameObject.tag == "Player")。注意双重“=”。你比较双重'='而不是一个。但效率不高。如果可能,请使用coll.gameObject.CompareTag代替coll.gameObject.tag ==

将动画放入Assets/Resources/Animation文件夹

Animation animation;
AnimationClip animanClip;
string animName = "walk";

// Use this for initialization
void Start()
{
    //Load Animation
    loadAnimation();
}

void loadAnimation()
{
    GameObject tempObj = Resources.Load("Animations/" + animName, typeof(GameObject)) as GameObject;
    if (!tempObj == null)
    {
        Debug.LogError("Animation NOT found");
    }
    else
    {
        animation = tempObj.GetComponent<Animation>();
        animanClip = animation.clip;

        animation.AddClip(animanClip, animName);
    }
}

public void OnTriggerEnter2D(Collider2D coll)
{
    if (coll.gameObject.CompareTag("Player"))
    {
        animation.Play(animName);
    }
}

最后,研究这些教程。

Unity Scripting Tutorial

Unity Physics Tutorial

Other Unity Tutorials