Unity2d游戏拍摄和动画同步问题

Unity2d game shooting and animation sync issue

我是 Unity 新手,正在制作我的第一款 2D 游戏。这一期看到论坛上好几个主题,都没有找到解决方法。

所以我有一个可爱的射击动画和子弹生成。我的问题是,我必须在动画中间的某处生成子弹,但角色同时发射子弹和动画,这会破坏用户体验:)

我附上了一张图片,关于这个问题,这是子弹应该初始化的时刻,但正如你所看到的,它已经在路上了。

请找到我的代码: 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;
    }......

我的问题: - 如何同步动画和子弹生成?

谢谢, K

我建议查看动画事件。使用动画事件,您可以调用一个方法来实例化您的子弹。

要使用 Mecanim 动画事件,您需要在 "Edit Animation Event" window 的 "Function" 区域的选定帧中写入要调用的函数的名称。

其他框用于您想要传递给该函数以触发您想到的任何变量。

Triggering/blending 不同动画之间可以用很多不同的方式来完成。事件区更多的是你想触发的其他与动画无关的东西(例如音频、粒子特效等)。