Vanilla JS Tutorials

JsIso Tutorials

RSS feed

03 - Applying shadows to isometric heightmap

Using the previous isometric tilemap we apply both horizontal and vertical shadows. The horizontal shadows can also be applied in a non isometric map. We have increased the tilemap size and added a secondary green rgba tile as the ground. The shadows are applied via the Tile Layer shadow flag.


    require([
      'jsiso/canvas/Control',
      'jsiso/tile/Field',
      'jsiso/img/load',
      'requirejs/domReady!'
    ],
    function(CanvasControl, TileField, imgLoad) {

      // RGBA of color to use
      var tileColor = "(158, 154, 255, 1)";
      var groundColor =  "(100, 154, 100, 1)";

      // Our Tile Map
      var tileMap = [
        [groundColor, groundColor, groundColor, groundColor, groundColor, groundColor, groundColor],
        [groundColor, tileColor, groundColor, tileColor, groundColor, tileColor, groundColor],
        [groundColor, tileColor, tileColor, tileColor, groundColor, tileColor, groundColor],
        [groundColor, tileColor, groundColor, tileColor, groundColor, tileColor, groundColor],
        [groundColor, groundColor, groundColor, groundColor, groundColor, groundColor, groundColor]
      ]

      // Our Height Map 
      var tileHeightMap = [
        [0,0,0,0,0,0,0],
        [0,1,0,1,0,1,0],
        [0,1,1,1,0,2,0],
        [0,4,0,4,0,3,0],
        [0,0,0,0,0,0,0]
      ]

      // X & Y drawing position, and tile span to draw 
      var xrange = 8;
      var yrange = 8;

      // use CanvasControl to create a simple canvas element
      // ID of Canvas,
      // width of Canvas,
      // Height of Canvas,
      // Optioanl: Any Style proprties we wish to apply,
      // Optional: The DOM ID location we wish to place the canvas in, otherwise it appends to Body
      var context = CanvasControl.create("canavas", 640, 640, {});

      var tileLayer = new TileField(context, CanvasControl().height, CanvasControl().width);

      var images = [
        {
          graphics: [
            "/img/game/ground/blank-block.png" // The images we want to load using imgLoader
          ]
        }
      ];


      imgLoad(images).then(function(imgResponse) { // imgLoad uses Promises, once the images have loaded we continue and use the returned imgResponse

        tileLayer.setup({
          layout: tileMap,
          isometric: true, // Flag used to layout grid in non isometric format
          tileHeight: 50,
          tileWidth: 100,
          heightMap: {
            map: tileHeightMap,
            heightTile: imgResponse[0].files["blank-block.png"], // imgResponse[0] contains the files[] we placed in the graphcis array for loading
            offset: 0
          },
          shadow: {
            offset: 50, // Offset is the same height as the stack tile
            verticalColor: '(5, 5, 30, 0.4)',
            horizontalColor: '(6, 5, 50, 0.5)'
          }
        });

        // Rotate our entire Map 
        tileLayer.rotate("left");

        // Set an offset so our map is on screen
        tileLayer.setOffset(200, 100)
        
        
        // Loop through our tiles and draw the map  
        for (i = 0; i < 0 + xrange; i++) {
          for (j = 0; j < 0 + yrange; j++) {
            tileLayer.draw(i,j);
          }
        }
      });
    });

Check out the View Source to see tutorial.

Tutorial Outcome (View & Run Source)

22 comments

  1. Thank a lot. You have done excellent job. I enjoyed your blog . Nice efforts.. candy crush

    — samuelddarden Wed, 29 May 2019

  2. I have been studying your entries all the way through my morning holiday, and I should admit the entire tutorials has been very enlightening and very well written. click here

    — Joshua A. Price Mon, 10 Jun 2019

  3. This site is very nice. I really like such a fantastic written tutorials. I will keep coming here again and again. Visit my link as well. click here

    — Joshua A. Price Mon, 10 Jun 2019

  4. Than you for sharing this! I like to look at coding as a metaphor for tree service. We'r epruning and trimming nature to get the results we want, and coding on computers so no different than pruning on a tree service. Anyways, thanks for sharing and I just wanted to take the time to say thank you from Winnipeg!

    — Christopher Macdonald Sat, 22 Jun 2019

  5. Reading this one will never get me bored cause of its nice information have. bathroom remodel

    — fredluis Wed, 10 Jul 2019

  6. Exact translation , great value and friendly people. What otherwise can I ask for? Strongly recommended! chinese translation

    — chinese translation Thu, 1 Aug 2019

  7. I was wondering if you could write a litte more on this topic. Thank you. seaport.seaworld

    — SAMS Thu, 1 Aug 2019

  8. These are great instructions thanks!!

    Vancouver accountability coaching Wed, 7 Aug 2019

  9. You have a nice procedure because it's easy to understand. Keep it up!
    roofing companies in Northern Kentucky

    — Jake Thu, 8 Aug 2019

  10. Well, this post is quite good! Thanks for updating my information about the subject. Pro Carpet Cleaning Hunter's Creek

    — Cassandra D. Everhart Mon, 19 Aug 2019

  11. Thanks for sharing your tutorial with us. Amazing!

    highrisk.solutions/ Wed, 28 Aug 2019

  12. Type naar gebruik of toepassing: bouwlift, goederenlift, huislift,
    liftinstallatie, personenlift, stoellift en de traplift

    Bron: Wikipedia. Een lift is een verticaal transportsysteem met
    vaste stopplaatsen, bedoeld voor het vervoer van personen en/of
    goederen. Het vervoer geschiedt door middel van een kooi waar
    de personen en/of goederen in geplaatst worden. De kooi bevindt
    zich meestal in een schacht en verplaatst zich langs vaste
    geleidingen omhoog of omlaag. Wanneer de kooi voor de stopplaats
    tot stilstand wordt gebracht, spreekt men van een stoplift.
    Door middel van vaste geleidingen wordt de lift in een verticale
    baan gehouden en omhoog en omlaag bewogen. Een contragewicht
    vermindert het effectieve gewicht van de lift. Voor het betreden
    en verlaten en - in het kader van goederentransport - het laden
    en lossen wordt de lift tot stilstand gebracht. Liftbouw soorten liftinstallaties Een uitzondering
    hierop zijn de paternosterliften die voor het betreden en
    verlaten niet tot stilstand worden gebracht. De liftinstallatie
    bestaat uit een machineruimte die zich meestal boven op de
    liftschacht en dus boven op het dak van een gebouw bevindt.

    Hierin is de liftmachine geplaatst en de schakelkast die de
    besturing van de lift regelt. Soms bevindt de machinekamer zich
    ook naast de schacht. Dit kan zowel boven als onder in de
    schacht zijn. Bij hydraulische liften maakt het niet uit waar
    de machineruimte zich bevindt. Een vinding van de laatste jaren
    is de machinekamerloze lift. Een ander belangrijk onderdeel van
    de lift is de liftschacht. Dit is de ruimte waarin de kooi en de
    leiders zich bevinden. Passagiers krijgen door middel van
    schachtdeuren toegang tot de liftkooi. Onder in de schacht
    bevindt zich de schachtput met de buffers voor de kooi.

    Aandrijving: Tractieliften, Hydraulische liften, Trommelliften,
    Spindelliften, tandheugelliften en Vacuümliften. Gerelateerd:
    Scheepslift, Skilift, Paternoster, Bouwlift, Elisha Otis,
    Trampe-fietslift, Bailonglift en traplift. Liftbouw bedrijf
    in Nederland dient te werken volgens de hoogste norm van
    veiligheid in Europa: de NEN-EN-81.

    — muneer ahmed Mon, 2 Sep 2019

  13. "Bron: Wikipedia. Een bungalowpark (ook vakantiepark)
    is een park met vakantiehuizen die verhuurd worden
    aan vakantiegangers en toeristen. De vakantiebungalows
    zijn niet bestemd voor permanente bewoning, maar worden
    in principe alleen tijdelijk verhuurd, doorgaans per
    week, midweek of weekend.

    Bungalowparken zijn meestal van de lente tot in de
    herfst geopend, maar zijn er steeds meer het gehele
    jaar door geopend. Een bungalowpark ligt vaak bij
    (of in) een recreatiegebied, natuurgebied ( bos,
    strand en zee ) of toeristisch attractieve omgeving.
    Toch kent een bungalowpark / pretpark zelf vaak ook
    de nodige basis voorzieningen. Vaak is er een
    zwembad, filmzaal, speeltuin en horecagelegenheid
    daarnaast zijn er meestal sportfaciliteiten als
    bowlingbanen en activiteitenprogramma's.

    Naast zeer luxe parken met alle voorzieningen in
    en om de bungalows zijn er ook zeer eenvoudige en
    rustige bungalowparken. Een eigenaar van een
    bungalowpark kan door het aanbod van voorzieningen
    op een bepaalde doelgroep van bezoekers richten.
    In Nederland en België behoort een groot deel van
    de parken toe aan een beperkt aantal bedrijven:
    Center Parcs (onderdeel van Pierre & Vacances Center
    Parcs Group), Sunparks (onderdeel van Pierre &
    Vacances Center Parcs Group), Landal GreenParks
    (Onderdeel van Platinum Equity), Roompot Vakanties,
    Recreatie Centra Nederland, Droomparken, Efteling
    (Efteling Bosrijk en Efteling Loonsche Land)

    Bovenstaande is slecht een beperkt overzicht van
    het totaal aan parken in België en Nederland.
    Overige europese landen hebben wij even buiten
    beschouwing gelaten maar zal online eenvoudig
    te vinden zijn wat elk land biedt.
    Populaire bungalowparken in Nederland
    Wat altijd belangrijk is dat de omgeving veel biedt
    aan de bezoeker zodat men niet alleen aangewezen
    is op de mogelijkheden en faciliteiten van het park.
    Kernwoorden: Natuur, Bos, Water, Strand en Zee etc.

    — muneer ahmed Tue, 3 Sep 2019

  14. "Bron: Wikipedia. Een vakblad is een tijdschrift dat gewijd
    is aan een bepaald vak, een beroep. Het eerste vakblad was
    voor mensen in de leerindustrie en verscheen eind 19e eeuw.
    Het ontstaan ervan had zijn wortels in de industriële
    revolutie. Steeds meer mensen kregen een gespecialiseerde
    taak in fabrieken en werkplaatsen. Deze werknemers en
    natuurlijk ook hun bazen hadden daardoor behoefte aan
    speciale scholing. Er ontstonden daardoor specialisten,
    die zich meestal verenigden in beroepsorganisaties en
    ook een eigen blad, een vakblad, oprichtten.

    Daar stond en staat informatie in over dat specifieke vak.
    Soms zeer gespecialiseerd, zoals nieuwe ontwikkelingen en
    informatie over en bepaald productieprocedé of product /
    gereedschap. Maar ook algemene informatie over bijvoorbeeld
    ontwikkelingen in het vak, nieuwe opleidingen, de toe-
    nemende of afnemende waarde van het vak, interviews en
    algemene opiniërende stukken over economie en eigen
    bedrijven. De branche vakbladen werden vroeger bijna
    allemaal vervaardigd door de beroepsverenigingen zelf,
    die daarvoor speciale redacteuren aanstelden.

    Dat waren meestal vakgenoten of bestuursleden, die ook
    vaardig waren met de pen en een beetje hadden doorgeleerd.
    In de tweede helft van de vorige (20ste) eeuw wierpen
    grote uitgevers of drukkers zich ook op de vakbladen.
    Ze namen de exploitatie en vervaardiging over van zo'n
    vereniging, of ze gingen zelf nieuwe vakbladen opzetten
    met professionele redacties. Dit laatste bleek vaak een
    lucratieve zaak, want er werd zo een platform gemaakt
    voor adverteerders. En uitgeverijen maken meestal bladen,
    ook vakbladen, om eraan te verdienen. Elke zichzelf
    respecterende (vak)branche heeft zo zijn eigen periodiek.

    Enkele titels: Groente & Fruit, De Molenaar, Bloemisterij,
    De Boerderij, De Architect, De Ingenieur, Cobouw, De
    Levensmiddelenkrant, Shops-Out-of-Home, Advocatenblad,
    Adformatie, Medisch Contact, Media Facts, Schoenvisie,
    Computable, Automatisering Gids, Management Team,
    Distrifood en Bizz. Grote uitgeverijen op dit gebied
    zijn Kluwer, Sdu Uitgevers, Elma Multimedia, Elsevier
    Business Press en VNU Media. Daarnaast zijn er
    vakbondsbladen, die een combinatie zijn van informatie
    over de uitoefening van het vak en over arbeidsvoorwaarden
    en wat die vakbond allemaal voor de leden doet. Maar
    deze kunnen niet tot de echte vakbladen worden gerekend.
    Nederland kent zo'n 3800 vakbladen en tegenwoordig ook
    veelal online digitaal via internet te downloaden. Vakblad branche / sector

    — muneer ahmed Tue, 3 Sep 2019

  15. I want you to thank for your time of this wonderful read!!! https://quickppsr.com.au
    I definitely enjoy every little bit of it and I have you bookmarked to check out new stuff of your blog a must read blog

    — muneer Tue, 3 Sep 2019

  16. Voor SEO in Utrecht kan je kiezen voor Invictus Online Marketing,
    Maar httpmarketing uit NH biedt landelijke seo dekking! Naast
    local seo diensten. Scoren jouw concurrenten in uw provincie
    ( Utrecht ) beter met hun website? Dan is het tijd om direct
    serieus aan de slag te gaan met zoekmachine optimalisatie (SEO).
    Ook conversie van uw website teksten worden herschreven zodat
    deze zoekmachine vriendelijk zijn maar ook een aantrekking
    hebben op de websitebezoeker! SEO Utrecht Stad

    — muneer ahmed Thu, 5 Sep 2019

  17. Thanks for sharing this routine. My friends at tinytowerstand.com/ office were trying to figure out how to move the shadow depending on the light position.

    — Karl Mon, 9 Sep 2019

  18. This looks easy but in reality, it isn't, right? I've tried one before.
    Daniel | pet odor removal columbia

    — Daniel Tue, 10 Sep 2019

  19. Thanks for this tutorial. I'd appreciate seeing a video of this as well so that it will make things a whole lot easier.
    Kevin | https://www.kitchensnclosets.com

    — Kevin Collins Tue, 10 Sep 2019

  20. Thanks for this tutorial. I'd appreciate seeing a video of this as well so that it will make things a whole lot easier.
    Kevin | shelf genie

    — Kevin Collins Tue, 10 Sep 2019

  21. UTVG is producent en importeur van nicotinehoudende elektronische
    sigaretten (""e-sigaretten"") van vijf verschillende merken (Flavor
    Vapes, Vape Master, Premium, Envy en Wanna Vape). De e-sigaret
    van UTVG bestaat uit een houder met de uiterlijke vorm van een
    sigaret, alsmede uit een batterij, een ampul, een verstuiver en
    een ledlampje. De ampul bestaat uit een oplossing van uit tabak
    geëxtraheerde nicotine en is in verschillende doses beschikbaar. Uitspraak elektronische sigaretten 2012

    — muneer Sat, 14 Sep 2019

  22. One present why galore businesses opt for postcards is because they are overmuch cheaper to be prefab and this can forbear a lot of expenses on the lengthened run.
    drivers knowledge test

    — muneera ahmed Sun, 15 Sep 2019

Please insert the result of the arithmetical operation from the following image:

Please insert the result of the arithmetical operation from this image. =