Ejemplo n.º 1
0
    void FixedUpdate()
    {
        switch (m_CurrentState)
        {
        case EnemyStates.IDLE:
            if (MathUtils.IsPointInsideCameraView(transform.position))
            {
                if (!m_IsStatic)
                {
                    m_CurrentState = EnemyStates.IMPULSE;
                }
                else
                {
                    m_CurrentState = EnemyStates.WAIT_SHOOT;
                }
            }
            break;

        case EnemyStates.IMPULSE:
            Vector2 force = new Vector2(0, m_TargetPosition.y);
            m_SpaceshipBehaviour.MoveForce(force);
            if (Vector3.Distance(m_TargetPosition, transform.position) <= m_DistanceAccelerating)
            {
                GenerateTargetPosition();
            }
            m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.DEFAULT);
            break;

        case EnemyStates.WAIT:
            if (Vector3.Distance(m_TargetPosition, transform.position) <= m_DistanceToChangeDestination)
            {
                m_CurrentState = EnemyStates.IMPULSE;
            }
            m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.DEFAULT);
            break;

        case EnemyStates.WAIT_SHOOT:
            m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.DEFAULT);
            break;
        }

        if (Debug.isDebugBuild)
        {
            Debug.DrawLine(transform.position, m_TargetPosition, Color.yellow);
        }
    }