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

Animation Unity2d游戏拍摄和动画同步问题,animation,unity3d,2d-games,Animation,Unity3d,2d Games,我是Unity的新手,正在制作我的第一个2D游戏。我在本期的论坛上看到了几个主题,但我没有找到解决方案 所以我有一个可爱的射击动画和子弹一代。我的问题是,我必须在动画中间的某个地方生成子弹,但是角色同时射击子弹和动画,这会杀死UX:) 我附上了一张关于这个问题的图片,这是子弹应该初始化的时刻,但正如你所看到的,它已经在路上了 请查找我的代码: GameManager更新方法调用Attacknemy函数: public void Awake(){ animator

我是Unity的新手,正在制作我的第一个2D游戏。我在本期的论坛上看到了几个主题,但我没有找到解决方案

所以我有一个可爱的射击动画和子弹一代。我的问题是,我必须在动画中间的某个地方生成子弹,但是角色同时射击子弹和动画,这会杀死UX:)

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

请查找我的代码: GameManager更新方法调用Attacknemy函数:

    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方法吗

  • 敌人从屏幕的右侧向左飞行,当他们到达屏幕的最右侧时,用户就可以看到他们。我不知道为什么,但他们先拍摄动画(没有子弹生成),然后才做空闲。知道为什么吗

谢谢, K


我建议查看动画事件。使用动画事件,可以调用方法来实例化项目符号

要使用Mecanim动画事件,您需要在“编辑动画事件”窗口的“函数”区域中的选定帧中写入要调用的函数的名称

其他框用于任何要传递给该函数以触发所需内容的变量

不同动画之间的触发/混合可以通过许多不同的方式完成。事件区域更多用于您想要触发的与动画无关的其他内容(例如音频、粒子fx等)