Unity - 3D i browsere

Unity’s 3D engine blev sidste år gratis og da 3D grafik er sjovt, og 3D grafik gjort nemt er endnu sjovere, skulle den naturligvis prøves.

Og Unity har gjort det rigtig nemt at lave 3D. En af de største styrker ved Unity er at brugeren kan lave projektet en gang og så udgive det til flere forskellige platforme, så som OS X, windows eller deres egen webplayer. Med Unity Pro kan man også udgive til Wii og iPhone/iPad.

Derudover er selve editoren nem at bruge, hvor objektor i verdenen, så som geometri og lyskilder, kan skabes som GameObjets. Fysik og scriptet adfærd er hellere ikke længere end et klik væk.

Et sjovt projekt der kombinere fysik, simpel geometri og en introduktion til scripting er xkcd’s Hell. Desuden er point systemet utroligt nemt.

Først skal blokkene laves. Under menuen GameObject -> CreateOther findes Cube, som skaber en kube i verdenen. Disse kuber kan så skaleres og placeres til at skabe alle de kendte tetris blokke.

Blocks

For at kunne arbejde med blokkene som et stykke geometry skabes der et nyt tomt GameObject og geometrien for hver blok placeres under hver deres tomme GameObject. Tyngdekraft og kollision tilføjes som beskrevet blot ved at tilføje en rigidbody komponent til GameObjectet.

Til sidst skal geometrien gemmes som en struktur hvorfra et nyt objekt kan instantieres hver gang en ny blok skal dale ned. Til dette bruges Unity’s Prefabs, prefabrikeret geometry. At obrette en ny blok kan nu gøres ved simpel drag ‘n drop fra prefab’en og over i scenen, eller ved at instantiere prefab’en i et script.

Selve banens geometri er ligeledes lavet ud fra 7 kuber. Hele geometrien samles så til et fungerende spil gennem 3 scripts.

Det første script TetrisGod.js, hvis navn er inspireret herfra. Formålet
med dette script er at skabe en tilfældig og muligvis spejlvendt blok.

Det andet script er StartGame.js. Dette scripts eneste formål er at bede den almægtige tetris gud om at starte spillet ved at skabe den første blok. Scriptet bliver sammen med TetrisGod.js placeret på kameraet og sat til at starte når kameraet “vågner”.

Det sidste script hedder MoveBlocks.js og er tilføjet på alle vores blocke. MoveBlocks er ansvarlig for at spilleren kan flytte blokken, at blokkene ikke falder udenfor banen og at en ny blok bliver spawnet når blokken kolliderer med et andet objekt. Desuden fjerner scriptet blokke når de ikke længere kan ses af kameraet.

Resultatet kan ses her. Et lille ekstra touch af smerte og pinsel er tilføjet ved ikke at teste for om der plads til at blokkene kan spawne. Hvis en blok derfor spawner oven i en anden blok resulterer det i at en sværm af blokke spawnes og spilleren må siges at have tabt.

For at finde ud af mere om Unity og hvordan man nemt kommer igang med at lave 3D projekter, kan man klikke ind på Unity3D.com’s resource sektion eller se en af de mange tutorials, der er tilgængelige på youtube.

2 tanker om "Unity - 3D i browsere"

  1. Blæret. Der lader dog til at være et problem med at få fjernet blokkene korrekt når de forlader det synlige område. I hvert fald går det langsommere og langsommere med at opdatere skærmen når den sprøjter blokke ud efter man har tabt.

  2. Yea, ta det som lidt ekstra pinsel 🙂

    Jeg vil gerne give Unity skylden for ikke at have implementeret et ordentligt view frustum, men virkeligheden er nok at jeg bare ikke har læst dokumentationen ordentligt. Det komme sikkert med i version 2 sammen med flere farver.

Der er lukket for kommentarer.