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

时间:2015-11-08 00:28:29

标签: animation unity3d 2d-games

我是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方法吗?

  • 敌人从屏幕右侧飞到左侧,当他们到达屏幕的最右侧时,他们会对用户可见。我不知道为什么,但他们先拍摄动画(没有子弹发生),只有在他们做空闲之后。知道为什么吗?

谢谢, ķ

enter image description here

1 个答案:

答案 0 :(得分:1)

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

要使用Mecanim动画事件,您需要在"功能"中选择要在所选帧中调用的功能名称。 "编辑动画事件"的区域窗口。

其他框适用于您要传递给该功能的任何变量,以触发您的任何想法。

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