Komme i gang med Matter.js Introduksjon

Matter.js er en 2D stiv kroppsfysikkmotor skrevet i JavaScript. Dette biblioteket kan hjelpe deg med å simulere 2D-fysikk i nettleseren. Den tilbyr mange funksjoner som evnen til å lage stive legemer og tildele fysiske egenskaper som masse, areal eller tetthet til dem. Du kan også simulere ulike typer kollisjoner og krefter som tyngdekraften og friksjonen.

Matter.js støtter alle de store nettleserne, inkludert IE8 +. I tillegg er den egnet for bruk på mobile enheter, da den kan oppdage berøring og har respons. Alle disse funksjonene gjør det verdt å investere din tid til å lære å bruke motoren, da du vil da kunne lage fysisk-baserte 2D-spill eller simuleringer enkelt. I denne veiledningen vil jeg dekke grunnleggende om dette biblioteket, inkludert installasjon og bruk, og jeg vil gi et fungerende eksempel.

Installasjon

Du kan installere Matter.js ved hjelp av pakkeforvaltere som Bower eller NPM ved hjelp av følgende kommandoer:

bower install matter-js npm installere matter-js

Du kan også få en kobling til biblioteket fra en CDN og direkte inkludere den i dine prosjekter som dette:

Et grunnleggende eksempel

Den beste måten å lære om Matter.js er å se noen faktisk kode og forstå hvordan det fungerer. I denne delen skal vi opprette noen få kropper og gå gjennom den nødvendige koden etter linje.

Var Engine = Matter.Engine, Render = Matter.Render, World = Matter.World, Bodies = Matter.Bodies; var motor = Engine.create (); var render = Render.create (element: document.body, motor: motor, alternativer: bredde: 800, høyde: 400, wireframes: false); var boxA = Bodies.rectangle (400, 200, 80, 80); var ballA = Bodies.circle (380, 100, 40, 10); var ballB = Bodies.circle (460, 10, 40, 10); var jordet = Bodies.rectangle (400, 380, 810, 60, isStatic: true); World.add (engine.world, [boxA, ballA, ballB, bakken]); Engine.run (motor); Render.run (render); 

Vi begynner med å opprette aliaser for alle Matter.js-modulene som vi kanskje trenger i vårt prosjekt. De Matter.Engine Modulen inneholder metoder for å skape og manipulere motorer. Motorer kreves i et prosjekt for å oppdatere simuleringen av verden. De Matter.Render Modulen er en grunnleggende HTML5 lerretbasert renderer. Denne modulen er nødvendig for å visualisere forskjellige motorer. 

De Matter.World Modulen brukes til å skape og manipulere verden der motoren går. Det ligner på Matter.Composite modul, men det lar deg justere noen ekstra egenskaper som tyngde og grensene. Den siste modulen i koden vår, kalt Matter.Bodies, lar deg lage stive kroppsobjekter. En annen lignende modul kalt Matter.Body lar deg manipulere individuelle legemer.

Neste linje bruker lag ([innstillinger]) metode av Matter.Engine modul for å lage en ny motor. De innstillinger parameteren i fremgangsmåten ovenfor er faktisk et objekt med nøkkelverdierpar for å overstyre standardverdiene for noen få egenskaper relatert til motoren. 

For eksempel kan du kontrollere den globale skaleringsfaktoren for tid for alle kroppene i verden. Innstilling av en verdi mindre enn 1 vil resultere i at verden interagerer i slowmotion. På samme måte vil en verdi større enn 1 gjøre verden raskere. Du vil lære mer om Matter.Engine modul i neste opplæring i serien.

Etter det bruker vi lag ([innstillinger]) metode av Matter.Render modul for å lage en ny renderer. På samme måte som motormodulen er innstillingsparameteren i fremgangsmåten ovenfor et objekt som brukes til å angi forskjellige alternativer for parameteren. Du kan bruke element nøkkel for å spesifisere elementet der biblioteket skal sette inn lerretet. På samme måte kan du også bruke lerret nøkkel for å angi lerretelementet der Matter.js-verdenen skal gjengis. 

Det er en motor nøkkel som du kan bruke til å spesifisere motoren som skal brukes til å gjengi verden. Det er også en opsjoner nøkkel som faktisk aksepterer et objekt som dets verdi. Du kan bruke denne tasten til å angi verdier for forskjellige parametere som bredde eller høyde av lerretet. Du kan også slå wireframes på eller av ved å sette verdien av wireframe nøkkelen til ekte eller falsk henholdsvis.

De neste linjene lager forskjellige organer som vil samhandle i vår verden. Kroppene er opprettet med hjelp av Matter.Bodies modul i Matter.js. I dette eksemplet har vi nettopp opprettet to sirkler og et rektangel ved hjelp av sirkel() og rektangel() metode. Andre metoder er også tilgjengelige for å lage forskjellige polygoner.

Når vi har opprettet kroppene, må vi legge dem til en verden av vårt valg ved hjelp av Legg til() metode fra Matter.World modul. Etter å ha lagt til de nødvendige kroppene i vår verden, trenger vi bare å kjøre motoren og rendereren ved hjelp av løpe() metode fra de respektive modulene. Det er egentlig all koden du trenger for å lage og gjengi en verden i Matter.js.

Koden i begynnelsen av denne delen oppretter følgende resultat.

Common Matter.js Moduler

Det finnes mer enn 20 forskjellige moduler i Matter.js. Alle disse modulene gir forskjellige metoder og egenskaper som er nyttige for å skape forskjellige typer simuleringer og lar deg kommunisere med dem. Noen av disse modulene håndterer kollisjoner, mens andre håndterer gjengivelse og simulering. 

Eksemplet i forrige avsnitt brukte fire forskjellige moduler for å håndtere gjengivelse, simulering og opprettelse av organer. I denne delen lærer du om rollene til noen vanlige moduler som er tilgjengelige i Matter.js.

  • Motor: Du trenger motorer for å oppdatere simuleringene av Matter.js-verdenen din. De Motor Modulen gir forskjellige metoder og egenskaper som gjør at du kan kontrollere oppførselen til ulike motorer.
  • Verden: Denne modulen gir deg metoder og egenskaper for å skape og manipulere hele verdener samtidig. De Verden er faktisk en Sammensatte kropp med ekstra egenskaper som tyngdekraften og grensene.
  • Bodies: Den Bodies Modulen inneholder forskjellige metoder for å hjelpe deg med å lage stive legemer med vanlige former som en sirkel, rektangel eller trapes.
  • Kropp: Denne modulen gir deg forskjellige metoder og egenskaper for å skape og manipulere de stive kroppene du har opprettet ved hjelp av funksjonene fra Bodies modul. Denne modulen lar deg skalere, rotere eller oversette individuelle legemer. Det har også funksjoner som lar deg spesifisere hastigheten, tettheten eller trögheten til forskjellige organer. På grunn av så mange funksjoner, diskuterer den tredje opplæringen i denne serien bare metodene og egenskapene som er tilgjengelige i kroppsmodulen.
  • Composites: Akkurat som Bodies modul, inneholder denne modulen forskjellige metoder som du kan bruke til å lage sammensatte organer med vanlige konfigurasjoner. For eksempel kan du lage en stabel eller pyramide av rektangulære bokser ved hjelp av bare en enkelt metode ved hjelp av Composites modul.
  • Sammensatte: Den Sammensatte Modulen har metoder og egenskaper som lar deg lage og manipulere sammensatte organer. Du kan lese mer om Sammensatte og Composites moduler i den fjerde opplæringen av serien.
  • Begrensning: Denne modulen lar deg lage og manipulere begrensninger. Du kan bruke en begrensning for å sørge for at to kropper eller et fast verdensrom peker og en kropp opprettholder en fast avstand. Det ligner på å koble to kropper gjennom en stålstang. Du kan endre stivheten av disse begrensningene slik at stangen begynner å virke mer som fjærer. Matter.js bruker begrensninger når du lager en Newtons vugge eller en kjedekompositt.
  • MouseConstraint: Denne modulen gir deg metoder og egenskaper som lar deg lage og manipulere musebegrensninger. Dette er nyttig når du vil at ulike organer i verden skal samhandle med brukeren. 

Siste tanker

Denne opplæringen var ment å introdusere deg til Matter.js biblioteket. Med dette i bakhodet har jeg gitt en rask oversikt over funksjonene og installasjonen av biblioteket. Det grunnleggende eksemplet med to sirkler og en boks viser hvor enkelt det er å lage enkle simuleringer ved hjelp av biblioteket. 

Siden Matter.js har mange moduler som hver legger til sine egne unike metoder for motoren, har jeg skrevet en kort oppsummering av få vanlige moduler. Resten av serien vil fokusere på å lære deg mer om disse vanlige modulene.