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
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


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