Um pouco sobre ape, atualmente na versão 0.3 alpha vi um pouco antes de começar a escrever. Como estou fazendo uma engine 2d, precisei de uma engine física, open obviamente. Esta supriu todos os meus problemas, e creio que fazer jogos com ela ficou muito mais fácil. Até por que o criador foi bondoso conosco e ainda colocou um paint() para todos os objetos. :D
Baixe, primeiramente, ela no site: http://www.cove.org/ape/. Crie um arquivo no seu flash 9 alpha/CS3 ou mesmo flex. tamanho default, e 30 fps. No flash acrescente no publish setting, as3 setting o path para a engine, no meu caso foi: D:\orlleite_temp\ape_a03\source. (Qualquer duvida quanto a isto, comente). Crie uma classe como: apeExample, no flash indique ela no document class, em propriedades.
package {
import org.cove.ape.*;import flash.display.Sprite;
import flash.events.Event;public class apeExample extends Sprite {
public function apeExample() {}
}
}
Para os novatos no as3, toda classe que será usada para mostrar alguma coisa na tela, (como a classe principal de um projeto), deverá extender Sprite. Importei Event por que iremos usa-la depois.
Se você indicou corretamente o path e tudo mais este código será possível compilar sem erro.
Não vou mudar muito o exemplo que veio com ele próprio acrescente as linhas:
addEventListener(Event.ENTER_FRAME, run);
Crie o métodos run:
private function run(evt:Event):void { }
O método run será o nosso sagrado onEnterFrame. Com tudo preparado vamos começar a usar a engine.
Inicia a engine. Este valor vai indicar a velocidade que as coisas ocorrem, e quanto forte são as coisas também, eu não sei ao certo dizer a forma correta para explicar o que seria, até por que achei o que o autor colocou um pouco confuso até chamando ele de delta. Mantendo os valores entre 1/4 e 1/3, temos algo suave, mas você pode fazer os seus testes também. Junto com ele e o método step você pode controlar o tempo, mas os valores como gravidade mudam também. Façam testes por vocês mesmo:
APEngine.init(1/3);
APEngine.container = this;
Este último é aonde ele vai pintar os objetos adicionados. Vamos colocar a gravidade agora:
APEngine.addMasslessForce(new Vector(0,3));
Não esperavam que fosse algo como setGravity, né?! O Vector é a indicação X, Y da força. Se colocar -3 no y você terá uma gravidade invertida, bom para fazer um exemplo onde a força magnética esteja puxando do teto por exemplo. :D
var floor:RectangleParticle = new RectangleParticle(275,375,550,50,0,true);
Leia a documentação, sem duvida é algo muito importante, no caso acima criamos um retângulo com: x, y, width, height, fixed. A posição dela é baseada no meio do objeto.
floor.setStyle(0, 0×000000, 1, 0×666666);
APEngine.addParticle(floor);
Linha simples cor preta, alpha 1, e preenchimento cinza 66. Adiciona a partícula a engine. No método run adicione:
APEngine.step();
APEngine.paint();
Compile e verá uma barra no fundo da tela.
Agora vem o mais simples, tudo que colocarmos que não for fixo já poderemos ver as ações da física.
var box:RectangleParticle = new RectangleParticle(275,20,20,20,0,false);
box.setStyle(0, 0×000000, 1, 0xFFCC00);
APEngine.addParticle(box);var circle:CircleParticle = new CircleParticle(175,190,10,false);
circle.setStyle(0, 0×000000, 1, 0×0033FF);
APEngine.addParticle(circle);
Me lembro da quantidade de códigos que iriamos ter que gastar para fazer isto, é um bom tempo que não teremos que gastar mais! Colocando algo a mais para ficar mais interessante:
var circle2:CircleParticle = new CircleParticle(215,230,55,true);
circle2.setStyle(0, 0×000000, 1, 0×00FF00);
APEngine.addParticle(circle2);
Compile e veja as colisões também. No próximo artigo sobre APE mostrarei o wheel, simulação de carro por exemplo e damping, fazer slow motion. T+
Julho 6, 2007 às 7:54 am |
[...] The google group [...]