ASP.Net  »  Articoli  »  Silverlight 

Farseer Physics Engine: un motore fisico per Silverlight

di: Giovanni Malanga     15 Ottobre 2008

Farseer Physics è un engine fisico (cinematico) open source, sviluppato interamente in C# che permette di creare grafica in 2D per le piattaforme Microsoft XNA e Silverlight.

I punti di forza di questo engine secondo il suo creatore Jeff Weber sono tutti focalizzati sulla semplicità con cui è possibile creare applicazioni divertenti quali ad esempio giochi altamente dinamici e allo stesso tempo molto curati dal punto di vista fisico. Grazie anche alla documentazione presente su CodePlex dove è ospitato il progetto, è possibile iniziare sin da subito e con poco sforzo a creare qualcosa di funzionale.

In questo articolo vedremo i passi necessari per utilizzare questo strumento e analizzeremo uno degli esempi rilasciati dallo stesso autore per mostrare le capacità del suo prodotto.

La Terminologia

Cominciamo prendendo confidenza con i termini utilizzati in Farseer Physics Engine, per comprendere meglio quello di cui stiamo parlando. Sostanzialmente questo engine fisico permette di applicare agli oggetti:

  • forze lineari che li fanno spostare nello spazio
  • forze di torsione che imprimono rotazioni

Il tutto avviene su un piano fisico virtuale in due dimensioni. Gli oggetti che è possibile muovere sul piano sono chiamati Bodies (corpi). Quindi sostanzialmente il processo di creazione di un ambiente virtuale con Farseer Physics Engine può essere schematizzato nei seguenti passi:

  • Creazione di bodies (oggetti)
  • Aggiunta di bodies al piano di simulazione
  • Inizio del ciclo di simulazione, che comprende:
    • Applicazione delle forze lineari e di torsione ai corpi
    • Aggiornamento dei corpi nel piano di simulazione
    • Posizionamento degli sprite dei corpi congiuntamente ad essi
    • Tracciamento degli sprite di simulazione
  • Termine del ciclo di simulazione

I corpi sono le entità più semplici in quanto essi non avendo "consistenza" nel mondo 2D non conoscono il concetto di "collisione" e pertanto possono trapassarsi vicendevolmente.

Le collisioni vengono invece introdotte tramite l'utilizzo di una seconda tipologia di oggetto, denominata Geometria. Gli oggetti geometrici sono rappresentati come poligoni 2D che possono essere concavi o convessi e sono composti da un insieme di vertici.

L'unione di una geometria con un body (corpo) permette di attribuire a quest'ultimo una "consistenza" grazie alla quale il corpo può subire delle collisioni con altri corpi dotati anch'essi di geometrie.

Ogni corpo possiede inoltre uno o più Sprite, ovvero dei riempimenti che permettono di dare "fisicità" ai corpi attraverso la colorazione dell'interno di essi.

Altri elementi importanti con cui si ha a che fare in Farseer Physics sono i vettori (Vector) ovvero elementi che permettono di applicare una forza gravitazionale ad un corpo. Ogni vettore ha una direzione ed una forza con la quale agisce sul corpo e grazie ad essi è possibile dare realismo agli oggetti facendo in modo che essi si comportino nei confronti della gravità esattamente come si comporterebbero i loro omologhi nel mondo reale.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto