Guida introduttiva a Matter.js Introduzione

Matter.js è un motore di fisica del corpo rigido 2D scritto in JavaScript. Questa libreria può aiutarti a simulare facilmente la fisica 2D nel browser. Offre molte funzionalità come la capacità di creare corpi rigidi e assegnare a loro proprietà fisiche come massa, area o densità. Puoi anche simulare diversi tipi di collisioni e forze come la gravità e l'attrito.

Matter.js supporta tutti i principali browser tra cui IE8 +. Inoltre, è adatto per l'uso su dispositivi mobili in quanto può rilevare il tocco e ha una reattività. Tutte queste caratteristiche fanno sì che valga la pena investire il tuo tempo per imparare come utilizzare il motore, in quanto sarai in grado di creare facilmente giochi o simulazioni 2D basati sulla fisica. In questo tutorial illustrerò le basi di questa libreria, inclusa l'installazione e l'utilizzo, e fornirò un esempio funzionante.

Installazione

Puoi installare Matter.js utilizzando i gestori di pacchetti come Bower o NPM con l'aiuto dei seguenti comandi:

installa bower importa-js npm installa importa-js

Puoi anche ottenere un collegamento alla libreria da un CDN e includerlo direttamente nei tuoi progetti in questo modo:

Un esempio di base

Il modo migliore per conoscere Matter.js è vedere un codice reale e capire come funziona. In questa sezione creeremo alcuni corpi e passeremo attraverso il codice richiesto riga per riga.

var Engine = Matter.Engine, Render = Matter.Render, World = Matter.World, Bodies = Matter.Bodies; var engine = Engine.create (); var render = Render.create (element: document.body, engine: engine, options: width: 800, height: 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 ground = Bodies.rectangle (400, 380, 810, 60, isStatic: true); World.add (engine.world, [boxA, ballA, ballB, ground]); Engine.run (motore); Render.run (rendering); 

Iniziamo creando alias per tutti i moduli Matter.js di cui potremmo aver bisogno nel nostro progetto. Il Matter.Engine modulo contiene metodi per creare e manipolare i motori. I motori sono necessari in un progetto per aggiornare la simulazione del mondo. Il Matter.Render module è un renderer basato su canvas HTML5 di base. Questo modulo è necessario per visualizzare diversi motori. 

Il Matter.World il modulo viene utilizzato per creare e manipolare il mondo in cui viene eseguito il motore. È simile al Matter.Composite modulo, ma ti consente di modificare alcune proprietà aggiuntive come gravità e misura. L'ultimo modulo nel nostro codice, chiamato Matter.Bodies, ti consente di creare oggetti del corpo rigidi. Un altro modulo simile chiamato Matter.Body ti permette di manipolare i singoli corpi.

La prossima linea usa il creare ([Impostazioni]) metodo del Matter.Engine modulo per creare un nuovo motore. Il impostazioni il parametro nel metodo precedente è in realtà un oggetto con coppie chiave-valore per sovrascrivere i valori predefiniti di alcune proprietà correlate al motore. 

Ad esempio, puoi controllare il fattore di scala globale del tempo per tutti i corpi del mondo. Impostando un valore inferiore a 1, il mondo interagirà al rallentatore. Allo stesso modo, un valore maggiore di 1 renderà il mondo frenetico. Imparerai di più sul Matter.Engine modulo nel prossimo tutorial della serie.

Dopo ciò, usiamo il creare ([Impostazioni]) metodo del Matter.Render modulo per creare un nuovo renderer. Proprio come il modulo Motore, il parametro delle impostazioni nel metodo precedente è un oggetto utilizzato per specificare diverse opzioni per il parametro. Puoi usare il elemento chiave per specificare l'elemento in cui la libreria deve inserire la tela. Allo stesso modo, puoi anche usare il tela chiave per specificare l'elemento canvas in cui deve essere visualizzato il mondo Matter.js. 

C'è un motore chiave che puoi usare per specificare il motore che dovrebbe essere usato per rendere il mondo. C'è anche un opzioni chiave che accetta effettivamente un oggetto come valore. È possibile utilizzare questo tasto per impostare valori per diversi parametri come il larghezza o altezza della tela. È inoltre possibile attivare o disattivare i wireframe impostando il valore di wireframe chiave per vero o falso rispettivamente.

Le prossime linee creano corpi diversi che interagiranno nel nostro mondo. I corpi sono creati con l'aiuto di Matter.Bodies modulo in Matter.js. In questo esempio, abbiamo appena creato due cerchi e un rettangolo usando il cerchio() e rettangolo() metodo. Sono disponibili anche altri metodi per creare diversi poligoni.

Una volta creati i corpi, dobbiamo aggiungerli a un mondo di nostra scelta usando il Inserisci() metodo dal Matter.World modulo. Dopo aver aggiunto gli elementi necessari al nostro mondo, abbiamo solo bisogno di eseguire il motore e il renderer usando il correre() metodo dai rispettivi moduli. Questo è praticamente tutto il codice che devi creare e rendere un mondo in Matter.js.

Il codice all'inizio di questa sezione crea il seguente risultato.

Moduli Matter.js comuni

Ci sono più di 20 diversi moduli in Matter.js. Tutti questi moduli forniscono diversi metodi e proprietà che sono utili per creare diversi tipi di simulazioni e consentono di interagire con essi. Alcuni di questi moduli gestiscono le collisioni, mentre altri gestiscono il rendering e la simulazione. 

L'esempio nella sezione precedente utilizzava quattro diversi moduli per gestire il rendering, la simulazione e la creazione di corpi. In questa sezione verranno illustrati i ruoli di alcuni moduli comuni disponibili in Matter.js.

  • Motore: Hai bisogno di motori per aggiornare le simulazioni del tuo mondo Matter.js. Il Motore modulo fornisce diversi metodi e proprietà che consentono di controllare il comportamento di diversi motori.
  • Mondo: Questo modulo fornisce metodi e proprietà per creare e manipolare interi mondi contemporaneamente. Il Mondo è in realtà a Composito corpo con proprietà aggiuntive come gravità e limiti.
  • Bodies: Il Bodies modulo contiene diversi metodi per aiutarti a creare corpi rigidi con forme comuni come un cerchio, un rettangolo o un trapezio.
  • Corpo: Questo modulo fornisce diversi metodi e proprietà per creare e manipolare i corpi rigidi che sono stati creati utilizzando le funzioni dal Bodies modulo. Questo modulo ti consente di ridimensionare, ruotare o tradurre i singoli corpi. Ha anche funzioni che ti permettono di specificare la velocità, la densità o l'inerzia di corpi diversi. A causa di così tante funzioni, il terzo tutorial di questa serie discute solo i metodi e le proprietà disponibili nel modulo Body.
  • compositi: Proprio come il Bodies modulo, questo modulo contiene diversi metodi che è possibile utilizzare per creare corpi compositi con configurazioni comuni. Ad esempio, puoi creare una pila o una piramide di riquadri rettangolari usando solo un singolo metodo con l'aiuto di compositi modulo.
  • Composito: Il Composito modulo ha metodi e proprietà che ti permettono di creare e manipolare corpi compositi. Puoi leggere di più su Composito e compositi moduli nel quarto tutorial della serie.
  • costrizione: Questo modulo ti consente di creare e manipolare i vincoli. È possibile utilizzare un vincolo per assicurarsi che due corpi o un punto dello spazio del mondo e un corpo fissi mantengano una distanza fissa. È simile al collegamento di due corpi attraverso un'asta d'acciaio. È possibile modificare la rigidità di questi vincoli in modo che l'asta inizi a comportarsi più come molle. Matter.js utilizza i vincoli durante la creazione di una culla di Newton o di un composito a catena.
  • MouseConstraint: Questo modulo fornisce metodi e proprietà che consentono di creare e manipolare i vincoli del mouse. Questo è utile quando vuoi che corpi diversi nel mondo interagiscano con l'utente. 

Pensieri finali

Questo tutorial intendeva introdurti alla libreria Matter.js. Tenendo presente ciò, ho fornito una rapida panoramica delle funzionalità e dell'installazione della libreria. L'esempio di base che comprende due cerchi e una casella mostra quanto sia facile creare semplici simulazioni usando la libreria. 

Poiché Matter.js ha molti moduli ognuno dei quali aggiunge i propri metodi unici al motore, ho scritto un breve sommario di alcuni moduli comuni. Il resto della serie si concentrerà sull'insegnamento di questi moduli comuni in modo più dettagliato.