GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


ajuda com rotacionar objeto e física

2 participantes

Ir para baixo

ajuda com rotacionar objeto e física Empty ajuda com rotacionar objeto e física

Mensagem por Duca Ter 19 maio 2015, 19:12

aew pessoal, já peço desculpas pela falta de conhecimentos, mas por isso estou aki Laughing Laughing

estou com um problema
meu jogo é plataforma 2d
com scripts básicos para isso,
porém eu tenho uma plataforma quadrada, e gostaria que ela rotacionasse 90º a cada X segundos... tudo bem conseguir fazer com sprites isso, mas fica ruuuim demais pelo fato de não ser o certo, funciona mas não é o certo....

depois tem um problema... o jogador quando está na plataforma não reage bem a rotação... ele fica estático... ele deveria ser "lançado" para direção em que a plataforma rotaciona...

alguém poderia me dar uma luz?

muito obrigado!!!!
Duca
Duca

Data de inscrição : 27/09/2014
Reputação : 1
Número de Mensagens : 27
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty Re: ajuda com rotacionar objeto e física

Mensagem por Black Studio Ter 19 maio 2015, 20:30

Bem, o que é mais adequado pra fazer com que o jogador seja jogado é fazendo que você use a engine de fisica do GM (LiquidFun/Box2D)

Mas suponho que você não esta fazendo isso xD
Mas relaxa que eu tive uma ideia, se eu entendi bem, tem um bloco que gira, e quando o bloco girar o jogador sera lançado. Ok.

Pra fazer com que o bloco gire a cada tantos segundos, faça o seguinte.
Create:
Código:
rotation_timer=3*room_speed  //Define a cada quantos segundos a bagaça vai girar.
rotate_timer=rotation_timer  //Este é o Timer, No step eu explico o que ele faz
way=-1 //Use -1 ou 1, Isso vai definir em qual o bloco vai girar e em que ele vai ser jogado. Basicamente esta variavel vai servir para multiplicar alguns valores, fazendo com que a direção na qual o bloco vai girar mude (NÃO USE VALORES QUEBRADOS)
angle_target=image_angle+(90*way) //Isso aqui define para aonde o bloco vai girar, neste caso é 90 graus no sentido antihorario.
rotating=false //Aqui define se vai rotacionar ou nao, vai servir na hora de jogar o jogador pra longe
rotation_speed=5 //Recomendo deixar em 1,2,3,5,6 ou 9, caso contrario a plataforma vai girar mais do que deve

Step:
Código:
rotate_timer-=1 //Aqui ele vai diminuir o timer, toda vez que o timer chegar a 0, ele vai resetar e realizar uma ação, que no caso seria

if rotate_timer<=0 //Se chegar a zero, realiza a ação
{
rotating=true //Ele esta girando
angle_target=image_angle+(90*way) //E define para qual direcao o bloco vai girar.
rotate_timer=rotation_timer //E reseta o Timer
}

if rotating=true //Se estiver girando
{
if image_angle!=angle_target
{image_angle+=(rotation_speed*way)} //Caso o angulo não é igual ao "alvo" da direção, ele gira na velocidade indicada no create
else {rotating=false} //Caso contrario ele para de girar
}
//Agora se o estiver tudo correto, o bloco deve girar corretamente a cada 3 segundos como foi definido no create.

Para fazer o jogador ser jogado pela plataforma, no Script de colisão dele basta verificar se ele esta rotacionando. Por exemplo no Collision event do jogador com a plataforma:
Código:
if other.rotating=true
{motion_add(90+(45*way),10)} // Caso o jogador colida com a plataforma enquanto ela esta girando, o jogador vai ser jogado meio que na diagonal esquerda

Se o jogador ficar travado no bloco, desligue a colisão dele com o bloco enquanto o bloco esta girando para que ele seja jogado de maneira correta.

Eu escrevi isso tudo no Forum, ou seja, eu não testei o script, então deve ter alguns errinhos de syntax, mas nada que seja impossivel de arrumar.
Black Studio
Black Studio

Games Ranking : Nota C

Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty Re: ajuda com rotacionar objeto e física

Mensagem por Duca Ter 19 maio 2015, 23:31

muuuito obrigado!
eu vou testar e te falo o que consegui
vlwwww blz
Duca
Duca

Data de inscrição : 27/09/2014
Reputação : 1
Número de Mensagens : 27
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty Re: ajuda com rotacionar objeto e física

Mensagem por Duca Qua 20 maio 2015, 12:49

Para fazer o jogador ser jogado pela plataforma, no Script de colisão dele basta verificar se ele esta rotacionando. Por exemplo no Collision event do jogador com a plataforma:

Código:
if other.rotating=true
{motion_add(90+(45*way),10)} // Caso o jogador colida com a plataforma enquanto ela esta girando, o jogador vai ser jogado meio que na diagonal esquerda

A rotação ficou perfeita!!!!!
só esse comando deu fatal erro...
ele não reage bem ao motion_add... não sei por que... vou tentar mudar mais algumas coisas...
aproveitando Happy
caso eu queira que um objeto siga essa rotação... eu tenho como? digamos que siga uma das faces da plataforma, como no caso de uma "trap", assim o jogador poderia pisar em apenas 3 das 4 faces da plataforma...

eu pensei em um jeito de fazer, que seria com o mesmo script da plataforma e apenas deixaria o sprite da trap centralizada com o da plataforma... funcional, mas acredito ter um jeito certo...

obrigado pela ajuda!!!!
Duca
Duca

Data de inscrição : 27/09/2014
Reputação : 1
Número de Mensagens : 27
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty Re: ajuda com rotacionar objeto e física

Mensagem por Black Studio Qua 20 maio 2015, 20:10

Opa, que bom, agora que eu percebi, ao inves de usar Motion_add, tente usar motion_set e o resultado deve ser melhor.

Duca escreveu:caso eu queira que um objeto siga essa rotação... eu tenho como?
Tem sim, basta você linkar a Poison com a plataforma (Cazalbé curtiu isso)

Uma boa maneira de fazer isso é usando ID, por exemplo no create da Trap você coloca:
Código:
target=id-1 //ID do objeto que vai usar como referencia
Basicamente ele vai pegar como referencia para movimento, o objeto colocado na Room antes dele. Ou seja, na Room, você coloca a plataforma, e logo em seguida coloca a Trap.

Ai no Step da Trap você muda a posição e o angulo dele de acordo com a Trap
Por exemplo:
Código:
x=target.x+lengthdir_x(18, target.image_angle);
y=target.y+lengthdir_y(18, target.image_angle);
image_angle=target.image_angle
Black Studio
Black Studio

Games Ranking : Nota C

Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty Re: ajuda com rotacionar objeto e física

Mensagem por Duca Qua 20 maio 2015, 22:41

Entendi, acho que vou conseguir fazer desse jeito aí funcionar bem, amanhã vou testar essa parte então, bem interessante... eu penso de umas formas que são totalmente mais trabalhosas e com certeza bem menos funcional... eu consegui fazer um esquema com um script de pulo, quando rotation=true ele pula... fica bem coerente, mas como falei, nada funcional...

Desculpa por mais uma pergunta:
Eu pensei em fazer uma mega plataforma!!! quase do tamanho da room, em que ela gire Happy
mas aí encontrei um sério problema... quando ela gira o jogador fica lá no meio dela.. preso... se usar física ele não seria jogado de um lado para o outro dentro da mega plataforma? como se fosse uma bala dentro de uma lata chacoalhando (que comparação doida Suspect )

enfim, eu vejo que pouca gente usa physics... tem algum motivo?


eu tenho uma ideia de usar um script que vi naquele tutorial do gms, "save&load" , lá ele usa um esquema de colisão interessante... dá de ter uma ideia ao menos e aprimorar... mas se alguém já ter visto algo parecido, por favor!

Eu vivo pesquisando no help e aki no gmbr muitas coisas... e aprendi um monte, mas algumas coisas eu não sei ao certo como procurar....

vlw AEW
Duca
Duca

Data de inscrição : 27/09/2014
Reputação : 1
Número de Mensagens : 27
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty mudando de ideia

Mensagem por Duca Sex 22 maio 2015, 12:15

Aeew

Desisti e decidi usar a física mesmo para poder fazer a coisa funcionar... mas tenho umas duvidas e problemas... que o jogador pula ele faz certinho, mas se ele ainda estiver no ar e apertar para pular de novo... e vai de encontro ao chão... ou seja... “pula para baixo”...
Isso não fica legal... segue o código...
Step:
Código:
//PULO
if keyboard_check_pressed(vk_space)
{{

physics_apply_local_impulse (0,0, 0,12)

if global.direcao = 0

sprite_index = spr_pulo

else

sprite_index = spr_pulo_2
}}

Agora outro problema com a plataforma... ela tem que girar... blz ela gira... mas muito rápido... e o que acontece?
Nada... tem como diminuir a velocidade da rotação? Tem um monte de coisa e nada...
Plataforma

Create:

Código:
var fixture;

fixture = physics_fixture_create();


physics_fixture_set_box_shape(fixture, sprite_get_width(sprite_index)/2, sprite_get_height(sprite_index)/2);

physics_fixture_set_density(fixture, 0);
physics_fixture_set_friction(fixture, 0.2);
physics_fixture_bind(fixture, self);
physics_fixture_delete(fixture);



//image_speed = 0.4
image_speed = 0.4

rotation_timer=3*room_speed  //Define a cada quantos segundos a bagaça vai girar.
rotate_timer = rotation_timer  //Este é o Timer, No step eu explico o que ele faz
way = -1 //Use -1 ou 1, Isso vai definir em qual o bloco vai girar e em que ele vai ser jogado. Basicamente esta variavel vai servir para multiplicar alguns valores, fazendo com que a direção na qual o bloco vai girar mude (NÃO USE VALORES QUEBRADOS)
angle_target = image_angle+(90*way) //Isso aqui define para aonde o bloco vai girar, neste caso é 90 graus no sentido antihorario.
rotating = false //Aqui define se vai rotacionar ou nao, vai servir na hora de jogar o jogador pra longe
rotation_speed = 5 //Recomendo deixar em 1,2,3,5,6 ou 9, caso contrario a plataforma vai girar mais do que deve

step:

Código:
rotate_timer-=1 //Aqui ele vai diminuir o timer, toda vez que o timer chegar a 0, ele vai resetar e realizar uma ação, que no caso seria

if rotate_timer<=0 //Se chegar a zero, realiza a ação
{
rotating=true //Ele esta girando
phy_rotation += 90

rotate_timer=rotation_timer //E reseta o Timer
}

Uma outra coisa... as unicas formas de colisão são aquelas setadas para sólidos? Shape, circulo e Box?
Eu não consigo fazer ele pegar outra forma, como a mascara?
Se a resposta for não eu gostaria de fazer uma caixa fechada com blocos e fazer toda a caixa girar de acordo com o centro dela
Digamos que todos os blocos que formam a caixa seguiriam a rotação de um objeto central, sem perder a formação e se perderem na room... eu vi na engine de physics do Joex3, mas pelo que entendi ele gira toda view... isso não é legal.... queria girar apenas alguns objetos...

Pode parecer que não vou atrás das coisas, mas acreditem... já mexi de monte nisso e tentei uma penca de coisas... pode ser que tenha uma engine já pronta, mas queria aprender a fazer...

Vlw pela ajuda aew



Duca
Duca

Data de inscrição : 27/09/2014
Reputação : 1
Número de Mensagens : 27
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty Re: ajuda com rotacionar objeto e física

Mensagem por Black Studio Sáb 23 maio 2015, 23:36

Duca escreveu:enfim, eu vejo que pouca gente usa physics... tem algum motivo?
Acho que é porque é meio dificil xD

Duca escreveu:o jogador pula ele faz certinho, mas se ele ainda estiver no ar e apertar para pular de novo... e vai de encontro ao chão... ou seja... “pula para baixo”.
Substitua o "physics_apply_local_impulse" por "physics_apply_impulse" ( O Local aplica uma força de acordo com a direção do objeto)

Agora outro problema com a plataforma... ela tem que girar... blz ela gira... mas muito rápido... e o que acontece?
Nada... tem como diminuir a velocidade da rotação? Tem um monte de coisa e nada...

Substitua o phy_rotation += 90 por phy_rotation += rotation_speed*way

Caso você esteja se referindo a rotação da plataforma quando o jogador pisa nela, ai você precisa aumentar a densidade (massa/m²) da plataforma, fazendo com que a força exercida sobre ela não seja o suficiente para gira-la tao rápido.

Duca escreveu:Uma outra coisa... as unicas formas de colisão são aquelas setadas para sólidos? Shape, circulo e Box?
Sim

Duca escreveu:Eu não consigo fazer ele pegar outra forma, como a mascara?
Você não pode pegar a Mascara, porém você pode criar uma forma diferente usando polígonos.
Black Studio
Black Studio

Games Ranking : Nota C

Notas recebidas : C + C
Data de inscrição : 19/10/2011
Reputação : 9
Número de Mensagens : 337
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty muuuuito BOM!!!!!! Rotacionar com physics (fisica)

Mensagem por Duca Dom 24 maio 2015, 17:44

ok, consegui fazer com física o que eu tinha em mente no começo quando vc começou a me ajudar! fiquei beeeem feliz com o resultado...

vou compartilhar com o pessoal aki como ficou e talvez sirva de ajuda para mais alguém.

O código serve para rotacionar um objeto em um ambiente com física a cada x segundos. Esse está setado para 3 segundos. caso queria rotação continua é só remover uma parte e deu!

Create:
Código:
var fixture;

fixture = physics_fixture_create();


physics_fixture_set_box_shape(fixture, sprite_get_width(sprite_index)/2, sprite_get_height(sprite_index)/2);
 


physics_fixture_set_density(fixture, 0);
physics_fixture_set_friction(fixture, 0.2);
physics_fixture_bind(fixture, self);
physics_fixture_delete(fixture);

//tudo até aqui foi para setar a física no bloco

rotation_timer=3*room_speed  //Define a cada quantos segundos a bagaça vai girar.
rotate_timer = rotation_timer  //Este é o Timer, No step eu explico o que ele faz
way = -1 //Use -1 ou 1, Isso vai definir em qual o bloco vai girar e em que ele vai ser jogado. Basicamente esta variavel vai servir para multiplicar alguns valores, fazendo com que a direção na qual o bloco vai girar mude (NÃO USE VALORES QUEBRADOS)
angle_target = phy_rotation +(90*way)//Isso aqui define para aonde o bloco vai girar, neste caso é 90 graus no sentido antihorario.
rotating = false //Aqui define se vai rotacionar ou nao, vai servir na hora de jogar o jogador pra longe
rotation_speed=5//Recomendo deixar em 1,2,3,5,6 ou 9, caso contrario a plataforma vai girar mais do que deve

No step:

Código:
rotate_timer-=1 //Aqui ele vai diminuir o timer, toda vez que o timer chegar a 0, ele vai resetar e realizar uma ação, que no caso seria

if rotate_timer<=0 //Se chegar a zero, realiza a ação
{
rotating=true //Ele esta girando
angle_target = phy_rotation +(90*way)
rotate_timer=rotation_timer //E reseta o Timer
}

if rotating=true //Se estiver girando
{
if phy_rotation !=angle_target
{phy_rotation += (rotation_speed*way)} //Caso o angulo não é igual ao "alvo" da direção, ele gira na velocidade indicada no create
else
{rotating=false} //Caso contrario ele para de girar
}
//funciona!!!

bem.. é isso
obrigado

créditos e agradecimento ao Black Studio
Duca
Duca

Data de inscrição : 27/09/2014
Reputação : 1
Número de Mensagens : 27
Prêmios : ajuda com rotacionar objeto e física Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

ajuda com rotacionar objeto e física Empty Re: ajuda com rotacionar objeto e física

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos