我是Unity的新手,也是我的第一款2D游戏。我在本期论坛上看到了几个主题,但我没有找到解决方案。
所以我有一个可爱的拍摄动画和子弹一代。我的问题是,我必须在动画中间某处生成子弹,但角色同时射击子弹和动画,这会杀死UX:)
我附上了一个关于这个问题的图片,这是当子弹应该被初始化时的那一刻,但正如你所看到的那样,它已经存在了。
请找到我的代码: GameManager更新方法调用attackEnemy函数:
public void Awake(){
animator = GetComponent ();
animator.SetTrigger ("enemyIdle");
}
//if the enemy pass this point, they stop shooting, and just go off the scren
private float shootingStopLimit = -6f;
public override void attackPlayer(){
//animator.SetTrigger ("enemyIdle");
if (!isAttacking && gameObject.transform.position.y > shootingStopLimit) {
isAttacking = true;
animator.SetTrigger("enemyShoot");
StartCoroutine(doWait());
gameObject.GetComponentInChildren ().fireBullet ();
StartCoroutine (Reload ());
}
}
private IEnumerator doWait(){
yield return new WaitForSeconds(5);
}
private IEnumerator Reload(){
animator.SetTrigger ("enemyIdle");
int reloadTime = Random.Range (4,7);
yield return new WaitForSeconds(reloadTime);
isAttacking = false;
}......
我的问题: - 如何同步动画和子弹生成?
为什么doWait()不起作用? :)
可以从GameManager更新中调用attackPlayer方法吗?
敌人从屏幕右侧飞到左侧,当他们到达屏幕的最右侧时,他们会对用户可见。我不知道为什么,但他们先拍摄动画(没有子弹发生),只有在他们做空闲之后。知道为什么吗?
谢谢, ķ
答案 0 :(得分:1)
我建议查看动画事件。使用动画事件,您可以调用方法来实例化子弹。
要使用Mecanim动画事件,您需要在"功能"中选择要在所选帧中调用的功能名称。 "编辑动画事件"的区域窗口。
其他框适用于您要传递给该功能的任何变量,以触发您的任何想法。
不同动画之间的触发/混合可以通过许多不同方式完成。事件区域更适用于您想要触发的与动画无关的其他事物(例如音频,粒子fx等)。