我是Unity Engine的新手编程游戏。我已经搜索了#34;如何从统一的资产中加载动画"但是没有找到解决方案。
我处理对撞机的触发器
void OnTriggerCollisionEnter2D(Collision2D coll){
if(coll.gameObject.tag = "Player"){
//try to load animation
}
}
如果你知道,请帮助我!谢谢
答案 0 :(得分:0)
首先,我认为你很难让我的解决方案有效,因为看起来你缺乏Unity基本的东西。
OnTriggerCollisionEnter2D
不是检测Trigger
的有效回调函数。
OnTriggerEnter2D(Collider2D coll)
正是您要找的。 p>
其次,在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);
}
}
最后,研究这些教程。