Usando APE para simulação de física no ActionScript 3.0

Depois de um longo hiato, volto aqui para falar de uma biblioteca de física para ActionScript, a APE. Gostei muito desta biblioteca e a adotei. Existem similares, como a Box2D e a JigLib (esta última, para 3D), caso interesse, mas aqui postarei um pequeno exemplo básico de como funciona.

No exemplo, mostro como é o funcionamento básico, e para demonstrar a flexibilidade da biblioteca, é mostrado como é possível realizar a detecção de colisão, misturando métodos comuns do AS 3.0 à objetos da biblioteca. O código foi criado usando FlashDevelop.

package {
import flash.text.TextField;
import org.cove.ape.*;
import flash.events.Event;
import flash.display.Sprite;

public class Main extends Sprite {

// CRIANDO UMA "ESFERA"
public var esfera:CircleParticle = new CircleParticle(250, 10, 25);

// CRIANDO RETANGULO (SERÁ O "PISO")
public var piso:RectangleParticle = new RectangleParticle(150, 300, 300, 50, 0, true);

// O GRUPO QUE SERÁ O NOSSO "MUNDO" ONDE OS OBJETOS IRÃO INTERAGIR
public var grupo:Group = new Group();

public function Main() {

stage.frameRate = 60;
addEventListener(Event.ENTER_FRAME, run);

APEngine.init(1/4);
APEngine.container = this;

// CRIANDO A FORÇA DA GRAVIDADE
APEngine.addMasslessForce(new Vector(0, 2));

// ATIVANDO COLISÕES
grupo.collideInternal = true;

// ADICIONANDO AO CÍRCULO A FORÇA QUE O MOVIMENTARÁ
esfera.addForce(new Vector(5, 0));

// JUNTANDO AO GRUPO
grupo.addParticle(esfera);
grupo.addParticle(piso);

APEngine.addGroup(grupo);
}

private function run(evt:Event):void {
// PROCESSAMENTO DA AÇÃO
APEngine.step();
APEngine.paint();

// DETECÇÃO DE COLISÃO - AO COLIDIREM SERÁ EXIBIDO UM TEXTO
if (esfera.sprite.hitTestObject(piso.sprite)) {
var txt:TextField = new TextField();
txt.text = "COLIDIU!";
addChild(txt);
}
}
}
}

Numa próxima postagem darei a dica de como associar essa biblioteca com a as3isolib (para criação de gráficos isométricos).

Be Sociable, Share!

1 pensamento em “Usando APE para simulação de física no ActionScript 3.0”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Time limit is exhausted. Please reload the CAPTCHA.