Extreme physics : Aprendendo o Básico

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Extreme physics : Aprendendo o Básico

Mensagem por Kapoty em Sab 04 Ago 2012, 18:11

Extreme physics
Aprendendo o básico
Bem neste tutorial ensinar a como criar uma simulação de physics usando a extremephysics.dll
o nivel de dificuldade é intermediario e requer a versão pro do game maker.
Para comecar o tutorial você deverá primeiramente baixar este pequeno pack clicando aqui
Depois instale a extensão da extreme physics, Ela vem junto com o pack. Para instalar clique em extensões, install e localize a extensão que esta na pasta do pack, depois clique na setinha para adicionar ela.
Apos isso você estará apito para comecar este tutorial =)
Bom, Vamos lá.

Scripts


physics_object_set:

Código:
ep_body_set_position(global.world, argument0, x, y, degtorad(image_angle));
physics_object_update:

Código:
x = ep_body_get_x(global.world, argument0);
y = ep_body_get_y(global.world, argument0);
image_angle = radtodeg(ep_body_get_rot(global.world, argument0));
draw_sprite_corrected:

Código:
var c, s, xx, yy;
c = cos(degtorad(argument6));
s = sin(degtorad(argument6));
xx = (c+s-1)/2;
yy = (c-s-1)/2;
draw_sprite_ext(argument0, argument1, argument2+xx, argument3+yy, argument4, argument5, argument6, argument7, argument8);

Objetos


obj_gamestart:

Adicione o evento game_start e nele coloque :

Código:
    if ep_gm_functions_init() {
        room_goto_next();
    }else{
show_message("Não conseguimos inicializar as funções do game maker!")
game_end()
}
/*
Explicação : Caso o game consiga carregar todas as funções ele vá para a proxima room senão ele mostra uma mensagem e encerra o jogo.
*/
obj_control:

Adicione o evento create e nele coloque :

Código:
global.world = ep_world_create();
ep_world_set_settings(global.world, 1, 20, 10, 0.1, 0.5, 0, 0.6, 1);
ep_world_set_sleeping(global.world, true, 60, 0, 0.01, 0.001);
/*
Explicação : global.world é a variavel que representará o mundo dos objetos
ep_world_set_settings(variavel_do_mundo,velocidade_do_mundo o normal é 1 acima de 1 acelera e abaixo de 1 desacelera,velocidade_das_interações,posicao_das_interações,limite_de_contato,
velocidade_de_contato,fator_de_baumgarte,viés_de_massa,fator_da_posicao)
ep_world_set_sleeping(variavel_do_mundo,ativar_sleeping,tempo_estavel,tempo_foradavista,estavel_velocidademaxima,estavel_velocidadederotacaomaxima)

confesso que neste explicas-são usei o google tradutor em vários momentos por isso não está 100% correto.
*/
Adicione o evento end_step e nele coloque :

Código:
ep_world_update_contacts(global.world);
ep_world_simulate_step(global.world);
/*
Vamos dizer que isso é necessário para simular o physics de todos os objetos do global.world
*/

Adicione o evento room_end e nele coloque :

Código:
ep_world_destroy(global.world); // Quando a room terminar deletar o global.world
obj_bloco_dinamico:

Adicione o evento create e nele coloque :

Código:
body = ep_body_create_dynamic(global.world, 0);
// o numero 1 significa se ele não terá rotação
shape1 = ep_shape_create_box(global.world, body, 24, 15, 0, 0, 0, 1);
// troque o 24-15 pelo tamanho da sprite
ep_shape_set_collision(global.world, body, shape1, 1, 1, 0);
//mundo,body,shape,1,1,grupo
ep_shape_set_material(global.world, body, shape1, 0.4, 0.4, 0, 0); //mundo,body,shape,restituicao,friccao,velocidade normal,velocidade tangente
ep_body_calculate_mass(global.world, body);
//mundo,body
ep_body_set_gravity(global.world, body, 0, 0.2);
//mundo,body,gravite x,gravite y
physics_object_set(body);
//cria um objeto physics do body
Adicione o evento destroy e nele coloque :

Código:
ep_body_destroy(global.world, body);
//quando o objeto ser destruido destruir sua body

Adicione o evento end_step e nele coloque :

Código:
physics_object_update(body);

Adicione o evento draw e nele coloque :

Código:
draw_sprite_corrected(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
//apenas um codigo simples para desenhar a sprite corretamente
obj_bloco_statico:

Adicione o evento create e nele coloque :

Código:
body = ep_body_create_static(global.world);
shape1 = ep_shape_create_box(global.world, body, 32, 32, 0, 0, 0, 1);
ep_shape_set_collision(global.world, body, shape1, 1, 1, 0);
ep_shape_set_material(global.world, body, shape1, 0.4, 0.4, 0, 0);
physics_object_set(body);
//mesma explicação do objeto anterior só muda o tipo do body que agora é static

Adicione o evento destroy e nele coloque :

Código:
ep_body_destroy(global.world, body); // mesma coisa...
obj_bola_dinamica:

Faça tudo exatamente igual ao obj_bloco_dinamico apenas mude o create e no lugar coloque :

Código:
body = ep_body_create_dynamic(global.world, 1);
shape1 = ep_shape_create_circle(global.world, body, 22, 0, 0, 0, 1);
// o numero 22 é o tamanho do circulo
ep_shape_set_collision(global.world, body, shape1, 1, 1, 0);
ep_shape_set_material(global.world, body, shape1, 0.4, 0.4, 0, 0);
ep_body_calculate_mass(global.world, body);
ep_body_set_gravity(global.world, body, 0, 0.2);
physics_object_set(body);

Rooms


room_gamestart:
Nele apenas coloque o obj_gamestart
room_game:
Nele coloque o obj_control e expalhe os objetos : obj_bloco_statico,obj_bloco_dinamico,obj_bola_dinamica

Bom, como vocês podem perceber tudo está funcionando perfeitamente e com isso encerramos este tutorial.
Espero que tenham aprendido algo.
Caso ainda tenham alguma duvida poste aqui mesmo e quem sabe eu não posso tira-lá de você.


Última edição por kapoty em Seg 27 Ago 2012, 17:44, editado 3 vez(es)

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: Extreme physics : Aprendendo o Básico

Mensagem por Thiago_o_programador em Sab 04 Ago 2012, 19:01

Muito bom, muito bom mesmo, é realmente um pouco complicado mexer com physics.

Parabéns!

(Para ficar melhor eu acho que só colocando uma engine mesmo. XD)

Thiago_o_programador

Ranking : Nota D
Número de Mensagens : 709
Idade : 19
Data de inscrição : 14/05/2009
Notas recebidas : D - C - D - C
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://www.jogosdahora.maisblog.net

Voltar ao Topo Ir em baixo

Re: Extreme physics : Aprendendo o Básico

Mensagem por Kapoty em Sab 04 Ago 2012, 22:50

Thiago_o_programador escreveu:Muito bom, muito bom mesmo, é realmente um pouco complicado mexer com physics.

Parabéns!

(Para ficar melhor eu acho que só colocando uma engine mesmo. XD)

Obrigado =), Só não coloquei a engine porque praticamente TODOS pulariam o tutorial e baixariam apenas a engine.

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: Extreme physics : Aprendendo o Básico

Mensagem por un00brn em Sab 04 Ago 2012, 23:30

Olha importei o .Gex e a Dll ta na mesma pasta, junto com o exe do jogo!

Dai quando inicia da o erro "Não conseguimos inicializar as funções do game maker!"

Ai fecha' tenho que fazer algo?

un00brn

Número de Mensagens : 117
Idade : 18
Data de inscrição : 18/06/2012
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.djurielrn.blogspot.com

Voltar ao Topo Ir em baixo

Re: Extreme physics : Aprendendo o Básico

Mensagem por Kapoty em Sab 04 Ago 2012, 23:36

un00brn escreveu:Olha importei o .Gex e a Dll ta na mesma pasta, junto com o exe do jogo!

Dai quando inicia da o erro "Não conseguimos inicializar as funções do game maker!"

Ai fecha' tenho que fazer algo?

Isso significa que o game maker não conseguiu inicializar todas as funções, como isso nunca ocorreu comigo não sei como resolver mas posso arriscar : tente baixar o pack denovo quem sabe ele não veio corrompido, mas caso o erro continue postarei a engine também né, fazer oque =/...

Kapoty

Ranking : Nota B
Número de Mensagens : 635
Data de inscrição : 05/11/2011
Notas recebidas : E + D + C + B + D +B + A
Reputação : 22
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: Extreme physics : Aprendendo o Básico

Mensagem por cascavelo em Sab 25 Ago 2012, 16:15

Olha importei o .Gex e a Dll ta na mesma pasta, junto com o exe do jogo!

Dai quando inicia da o erro "Não conseguimos inicializar as funções do game maker!"

Ai fecha' tenho que fazer algo?
Você se lembrou de instalar a extensão no GM?
Caminho: Resources/ Extension Packages / Install
Selecione o .Gex no seu PC, depois selcione a extensão na janela direita e clique na setinha pra ativar no GM. Agora pode usar.

cascavelo

Ranking : Nota A
Número de Mensagens : 1011
Idade : 46
Data de inscrição : 08/12/2011
Notas recebidas : A - A - A - A - A -A -C
Reputação : 71
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 1

Voltar ao Topo Ir em baixo

Re: Extreme physics : Aprendendo o Básico

Mensagem por Conteúdo patrocinado Hoje à(s) 12:26


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum