Entrar
Últimos assuntos
» player não consegue andarpor 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
Girando em torno
4 participantes
Página 1 de 1
Girando em torno
Galera to colocando a engine aqui,
Se trata do seguinte: tem tres morcegos e eles vao girar em torno do bichinho branco.
So que com o código que to usando, ele sobrepoe cada morcego e eles giram no mesmo lugar.
Queria que eles girassem em locais diferentes, aparecendo sem se um em cima do outro, por favor.
Download aqui!!!
Se trata do seguinte: tem tres morcegos e eles vao girar em torno do bichinho branco.
So que com o código que to usando, ele sobrepoe cada morcego e eles giram no mesmo lugar.
Queria que eles girassem em locais diferentes, aparecendo sem se um em cima do outro, por favor.
Download aqui!!!
chicoweb- Games Ranking :
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Reputação : 49
Número de Mensagens : 675
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Re: Girando em torno
De acordo com seu código, a variável que especifica onde os morcegos devem ficar é a direção (direction). Em nenhum momento você definiu qual é a direction dos morcegos, logo, todos iniciam na mesma direção, ou seja, 0. Tudo o que você tem que fazer, é definir uma direção para cada morcego. Faça um teste simples... No create do morcego, coloque:
Ainda sim, haverá a possibilidade de seus morcegos (por mera probabilidade) ficarem sobrepostos.
Então, adaptei sua engine e tornei o objeto controle, de fato, um objeto controle. É a partir dele que serão criados os morcegos e é ele que vai definir a direção dos morcegos, deixando tudo simétrico e garantindo que não ficarão sobrepostos independente da quantidade de morcegos.
Sem mais, aqui está:Download
- Código:
direction = irandom(360);
Ainda sim, haverá a possibilidade de seus morcegos (por mera probabilidade) ficarem sobrepostos.
Então, adaptei sua engine e tornei o objeto controle, de fato, um objeto controle. É a partir dele que serão criados os morcegos e é ele que vai definir a direção dos morcegos, deixando tudo simétrico e garantindo que não ficarão sobrepostos independente da quantidade de morcegos.
Sem mais, aqui está:Download
Re: Girando em torno
O que vc pretende é um movimento circular em torno de um objeto.
O código abaixo certamente resolve:
Evento CREATE:
Agora se quiser algo mais nerd:
O código abaixo certamente resolve:
Evento CREATE:
- Código:
raio = 100; //raio do giro. Alterne esse valor entre os objetos que vão ficar circulando para eles nao se sobreporem
xc = x;
yc = y;
angulo = 0;
- Código:
x = xc + lengthdir_x(raio, angulo);
y = yc + lengthdir_y(raio, angulo);
angulo += 1; //roda no sentido horário... alterne esse valor entre os objetos para variar a velocidade de cada um... valores negativos vão fazer mudar o sentido
if (angulo > 360) angulo = 0;
Agora se quiser algo mais nerd:
- Código:
x = xc + cos(degtorad(angulo))*raio;
y = yc - sin(degtorad(angulo))*raio;
angulo += 1; //roda no sentido horário
if (angulo > 360) angulo = 0;
fredcobain- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Girando em torno
Fredcobain, o problema dele não era com o movimento, mas sim, o fato dos objetos estarem ocupando o mesmo espaço. Tanto é que no código dele, ele usou a "forma nerd". Veja a engine que ele deixou.
E só pra constar, não é necessário zerar o ângulo quando passar de 360.
E só pra constar, não é necessário zerar o ângulo quando passar de 360.
Re: Girando em torno
É verdade!! Kkkkkkk
Isso é que dá nao baixar as engines...
Mass.... não seria só caso então dele variar o raio e a velocidade de acréscimo do ângulo para cada instância ?
Isso é que dá nao baixar as engines...
Mass.... não seria só caso então dele variar o raio e a velocidade de acréscimo do ângulo para cada instância ?
fredcobain- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Girando em torno
A solução do Willy (no primeiro post dele) me parece a mais adequada, quando se fala em objetos rodando em torno do outro. Uma simetria se faz necessária, nesses casos, e a simetria só é alcançada quando um único objeto controla a posição inicial dos demais. Daí, tanto faz se ele é quem vai controlar o resto das posições ou se cada instância toma conta de si.
Particularmente, eu gosto de usar um único objeto e controlar as instâncias a partir dele, mas isso é gosto pessoal.
MAS estamos falando de morcegos. Morcegos têm um movimento errático. De fato, colocar velocidades angulares aleatórias, raios de giro que aumentam e diminuem (senoidalmente), poxa, até variar a velocidade angular (senoidalmente também) e usar umas 5 ou mais instâncias de morcegos, batendo as asas, pode dar um efeito bem mais morcegástico do que usar simetria.
Como o fredcobain, eu não baixei a engine. Suponho que a vista seja top-down. Se não for, pode ser legal, também, alterar o depth dos morcegos a cada vez que ele chegue num extremo de trajetória. Mas isso é se não for top-down.
Particularmente, eu gosto de usar um único objeto e controlar as instâncias a partir dele, mas isso é gosto pessoal.
MAS estamos falando de morcegos. Morcegos têm um movimento errático. De fato, colocar velocidades angulares aleatórias, raios de giro que aumentam e diminuem (senoidalmente), poxa, até variar a velocidade angular (senoidalmente também) e usar umas 5 ou mais instâncias de morcegos, batendo as asas, pode dar um efeito bem mais morcegástico do que usar simetria.
Como o fredcobain, eu não baixei a engine. Suponho que a vista seja top-down. Se não for, pode ser legal, também, alterar o depth dos morcegos a cada vez que ele chegue num extremo de trajetória. Mas isso é se não for top-down.
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Girando em torno
Galera valeu ai pela ajuda, os códigos de vcs ficaram show, mas como eu fiz o "Método Nerd", o código do Willy se encaixou melhor na engine.Willy escreveu:De acordo com seu código, a variável que especifica onde os morcegos devem ficar é a direção (direction). Em nenhum momento você definiu qual é a direction dos morcegos, logo, todos iniciam na mesma direção, ou seja, 0. Tudo o que você tem que fazer, é definir uma direção para cada morcego. Faça um teste simples... No create do morcego, coloque:Com isso, seu problema está resolvido em parte.
- Código:
direction = irandom(360);
Ainda sim, haverá a possibilidade de seus morcegos (por mera probabilidade) ficarem sobrepostos.
Então, adaptei sua engine e tornei o objeto controle, de fato, um objeto controle. É a partir dele que serão criados os morcegos e é ele que vai definir a direção dos morcegos, deixando tudo simétrico e garantindo que não ficarão sobrepostos independente da quantidade de morcegos.
Sem mais, aqui está:Download
Só que o código dele gerava aleatoriamente a posição, fiz um ajuste para ordenar os morcegos direitinho:
- Código:
// assim SEPARA ELES - o 100 significa o quanto separa
x = object1.x + distancia * cos(degtorad(direction + (ind*100)));
y = object1.y + distancia * sin(degtorad(direction + (ind*100)));
Para isso tive que criar as instancia via código pelo obj_game_control:
- Código:
qatras = 10;
for (i=0 ; i<=qatras ; i+=1){
obj[icont] = instance_create(0,0,object2);
obj[icont].ind = icont;
}
chicoweb- Games Ranking :
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Reputação : 49
Número de Mensagens : 675
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Re: Girando em torno
2 coisas:
no segundo código, substitua "icont" por "i" ou vice-versa. Senão sua array só vai ter um elemento. (onde vc definiu o valor de "icont"?)
se quiser separar os morcegos uniformemente, pode definir o ângulo de cada um como um divisor de 360:
no segundo código, substitua "icont" por "i" ou vice-versa. Senão sua array só vai ter um elemento. (onde vc definiu o valor de "icont"?)
se quiser separar os morcegos uniformemente, pode definir o ângulo de cada um como um divisor de 360:
- Código:
// assim SEPARA ELES - o dAng significa o quanto separa
var dAng; dAng := 360 / qatras;
x = object1.x + distancia * cos(degtorad(direction + (ind*dAng)));
y = object1.y + distancia * sin(degtorad(direction + (ind*dAng)));
- Código:
qatras = 10;
var dAng; dAng := 360 / qatras;
for (i=0 ; i<=qatras ; i+=1){
obj[i] = instance_create(x + distancia * cos(degtorad(direction + (i*dAng))), y + distancia * sin(degtorad(direction + (ind*dAng))), object2);
obj[i].ind = icont;
}
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: Girando em torno
Willy escreveu:Então, adaptei sua engine e tornei o objeto controle, de fato, um objeto controle. É a partir dele que serão criados os morcegos e é ele que vai definir a direção dos morcegos, deixando tudo simétrico e garantindo que não ficarão sobrepostos independente da quantidade de morcegos.
Acredito que você não baixou minha engine... Nela os morcegos estão sendo criados da mesma forma que o saim fez, ou seja, pegando 360 e dividindo pela quantidade de morcegos. Depois, em um laço for, criando e definindo um direction para os morcegos de acordo com o resultado da divisão.chicoweb escreveu:Só que o código dele gerava aleatoriamente a posição, fiz um ajuste para ordenar os morcegos direitinho:
Re: Girando em torno
Tá certo sim galera.
Melhorou ainda mais agora tá perfeita, o segredo eh dividir o 360 pela quantidade mesmo. o meu ate deu certo mas foi meio um chutometro kkkk.
Obrigado ae vcs pela ajuda.
Melhorou ainda mais agora tá perfeita, o segredo eh dividir o 360 pela quantidade mesmo. o meu ate deu certo mas foi meio um chutometro kkkk.
Obrigado ae vcs pela ajuda.
chicoweb- Games Ranking :
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Reputação : 49
Número de Mensagens : 675
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 0
x 0 x 0 x 0
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos