Como criar um muralha?

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

Resolvido Como criar um muralha?

Mensagem por kadini em Qua 02 Maio 2012, 15:49

Olá, eu estou com duvida, nao é bem uma duvida é mais talvez ignorância, que eu cria era um sistema para criar muralhas, estao a ver o genrero, eu pensei numa coisa tipo obj_inicial, obj_final, tipo eu fazia uma linha em que o ponto 1 fosse o obj inicial , o ultimo ponto era o obj_final, e os pontos entre elos 2 objetos seriam a parte da muralha.

Se ouver outra maneira tb da, eu e que nao fasso a minima ideia como fazer uma muralha ( assoes com o rato )...

Ficaria muito grato.
pudiam fazer um engine, pois seria bastante interessante e acredito que nao tenha sido o 1º a ter esta duvida...

P.s.
depois estava a pensar uzar alguma coisa deste genero
Código:
if not(collision_line(x1,y1,x2,y2,obj,prec,motme))
{//a muralha fica verde e cria}
da para fazer assim?


Última edição por kadini em Qui 03 Maio 2012, 09:34, editado 1 vez(es)

kadini

Número de Mensagens : 192
Idade : 20
Data de inscrição : 02/03/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por saim em Qua 02 Maio 2012, 16:10

Isso está um tanto genérico... Olha, talvez seja interessante criar um objeto pra ser a ta muralha, um objeto com uma sprite de espessura conhecida, com origem em (0, altura / 2).
Daí, ao definir os dois pontos, você cria esse objeto, na posição do ponto1, com image_angle = (direção do ponto1 ao ponto2) e image_xscale = ((distância do ponto1 ao ponto2) / espessura da sprite).
Iso vai fazer seu objeto-muralha ocupar o espaço entre os dois pontos.

Você vai ter que tomar alguns cuidados. Eu não sei como é a engine do seu jogo, então não sei que problemas vai encontrar, mas existem algumas coisas que são previsíveis. Por exemplo, se houver muitos pontos, é preciso saber de qual ponto1 e apontando pra qual ponto2 o objeto será criado. Pra evitar isso, ou não use objetos pra marcar os pontos ou elimine os pontos assim que criar a muralha.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por kadini em Qua 02 Maio 2012, 16:46

nao persebi muito bem sera que podes fazer um engine, ou entam postares um codigo completo, nao é presiso escreveres a explicar, que eu ca me arranjo, mas se quisers Smile

kadini

Número de Mensagens : 192
Idade : 20
Data de inscrição : 02/03/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por saim em Qua 02 Maio 2012, 17:32

É o seguinte... você quer que a sprite ligue o ponto1 ao ponto2. Então o que eu sugeri foi colocar essa sprite no ponto1 com o ângulo da imagem igual ao ângulo que liga os dois pontos. Acho que nisso não ficaram dúvidas, certo?

A parte complicada (+ ou -) é a da escala. Olha só, a gente quer definir um tamanho exato pra essa sprite, então tem que colocar um image_xscale. Se o image_xscale for "1/largura da sprite", o resultado será 1. Ora, então basta multiplicar esse 1 pela largura que queremos como resultado final!
Resumindo, image_xscale = (largura que queremos / largura original).

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por kadini em Qua 02 Maio 2012, 17:35

desculpa estar a ser chato

eu nao sei fazer o codigo para ligar o ponto1 ao ponto2.

obrigado pela explicaçao.

kadini

Número de Mensagens : 192
Idade : 20
Data de inscrição : 02/03/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por saim em Qui 03 Maio 2012, 08:23

Não está sendo chato. Eu é que estou partindo do pré-suposto que você já aprendeu algumas coisas que, na verdade, ainda não sabe.
Bom, cada um desses pontos tem suas coordenadas (x, y). Existe uma funções que te retorna o ângulo entre dois pares de coordenadas (x, y) e outra que te retorna a distância. Use essas funções pra armazenar em variáveis esses valores, como abaixo.
Código:
angulo = point_direction(x1, y1, x2, y2);
distancia = point_distance(x1, y1, x2, y2);
Nota: (x1, y1) são as coordenadas (x, y) do ponto1 e (x2, y2) são as do ponto2.

Bom, o resto já está explicado na conversa acima. No ponto1, crie o objeto-muralha com image_angle = angulo e image_xscale = (distancia / largura_da_sprite).
Nota: estou partindo do pré-suposto que você tem a versão pro do game maker.

Pode parecer que, como o objeto está inclinado, você terá que alterar também o valor de image_yscale, mas não é bem assim. image_xscale e image_yscale se referem à proporção do sprite original, sem rotação. Depois de aplicadas as escalas é que a imagem será rotacionada.
Os códigos de colisão levam em consideração essas alterações da sprite.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por kadini em Qui 03 Maio 2012, 08:59

muito obrigado, ja persebi... deu certo Smile

agora so o tenho de editar para fazer exatamente o que eu quero, vamos mer se corre bem Smile

kadini

Número de Mensagens : 192
Idade : 20
Data de inscrição : 02/03/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por saim em Qui 03 Maio 2012, 09:33

Beleza.
Como eu disse, esse método requer alguns cuidados. Eu não sei como você está implementando isso, então não tenho como te prevenir nada. Mas é esperado que você encontre problemas ao criar mais muralhas. Se acontecer, estamos aí!

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por moisesBR em Qui 03 Maio 2012, 14:03

blz tambem percebi isso mas, xscale nesse caso, apenas estica a imagem.
(nao, nao estou trabalhando nisso apenas vi o post e resolvi opinar)

Creio que, o user queira saber tambem(eu tb): Ao traçar uma linha, digamos, vertical ou horizontal*, mediria-se a distancia, e calculando quantos objetos/sprites caberiam, sendo essas, desenhadas repetidamente sem usar o image scale!*(diagonal depois mais complicado)

Imagine uma sprite de muro com 20x20p, se a distancia x ou y for de 200, ali nesse espaço caberia e seria desenhado 10 muros em sequencia!

Isso serviria para que ao inimigo atacar o muro, o único a ser destruido seria aquele nao todo o muro. Exemplos:Empire Earth e Age of Empires
Supondo que o user está trabalhando com um game nesse estilo, é claro.

moisesBR

Número de Mensagens : 873
Idade : 40
Data de inscrição : 24/10/2009
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por kadini em Qui 03 Maio 2012, 16:39

supoes bem, era nesse estilo EMpire Earth Age of empire, stronghold.

Sabes outra maneira para fazer isto???

kadini

Número de Mensagens : 192
Idade : 20
Data de inscrição : 02/03/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por moisesBR em Sex 04 Maio 2012, 12:37

Nao. Somente a idéia. E se tratando de programaçao, creio que tudo é possível.

Minha idéia se resume em apenas duas:
1-(in game), encontre algum code(nao sei) que consiga traçar uma linha.
2=E nessa linha, será desenhado a quantidade de sprites/objetos que couber.

A de traçar a linha, vi algo do tipo num tuto(pathfind) onde voce clica em um ponto e o personagem vai até lá desviando de obstáculos(vai lhe se útil pro seu tipo de projeto). reparei que ele deixa um traço(modifiquei para testar) quase invisível para vermos o caminho calculado:
http://gmbr.forumeiros.com/t13821-aula-avancada-pathfinding

Outro que pode ser útil pra voce é o que o Theguitarmester fez para me ajudar, onde o player vira deixa o rasto:
http://gmbr.forumeiros.com/t22061-resolvido-ajuda-ia-sem-path-seguir-escolher-caminho#166300

E.... mais uma idéia que me veio a mente neste momento:
usar o metodo draw object como se fosse àquele do bomberman onde ele passa coloca a bomba, ou do come-come que ao invés de pegar objetos, coloca, no caso, o muro.
(para dar mais realidade qd vc conseguir o objetivo desse post, coloque uma animaçao de construçao do muro, e em um enimation end: conclusao)

moisesBR

Número de Mensagens : 873
Idade : 40
Data de inscrição : 24/10/2009
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por kadini em Sex 04 Maio 2012, 14:41

oi, e uma ideia engraçada e talvez mais facil, apesar de a de cima estar a funcinar a 99% ( falta corrigir umas coisas ).

nao quers criar um tuto, a explicares isso pq axo que varias pessoas iam ter coriosidade em ver, pq axo que aind e algo trabalhoso, deixo esta pergunta para ti..

kadini

Número de Mensagens : 192
Idade : 20
Data de inscrição : 02/03/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por saim em Seg 07 Maio 2012, 10:32

Como estão suas notas em matemática? Sabe tudo de arrays?

É o seguinte... Podemos dividir uma reta em trechos do tamanho do lado do quadrado que será usado como muralha. Nesse caso, não pode ser qualquer retângulo, TEM que ser quadrado. Aí, definimos um conjunto de pontos da reta e alinhamos esses pontos à grade. Verificamos se existe um quadrado-muralha lá. Se não tem, criamos um, se tem, ignoramos e seguimos adiante.

Bom, podemos usar o ponto1 pra começar esse conjunto de pontos, a distância entre os pontos e o tamanho do quadrado pra saber o número de pontos e as distâncias em x e y pra definirmos a posição de cada um deles.
Não é difícil alinhá-los à grade e testar se existe a muralha é tão simples quanto um instance_position. Eu vou deixar isso sem códigos, por enquanto, mas acho que vai ser um pouco complicado pra você entender sem uma ilustração. Se eu tivesse ao menos como ilustrar com uma figura, já facilitava, mas por enquanto, nem isso. Mas procure entender o conceito. Se você achar que vale a pena, eu volto, dando um pouco mais de detalhes da idéia.

@moisesBR: acho que entendi a "linha" que você quer desenhar, seria uma linha serrilhada, um caminho "pixelado" de um ponto a outro, certo? Usar pathfinding pra isso seria usar um canhão pra matar uma formiga. As funções de pathfinding são lentas. Não que nós precisemos de velocidade nesse caso, afinal a criação de muralhas será eventual (2 a 3 trechos de muralhas por segundo e isso quando o jogador for rápido), mas ainda assim, não é uma boa. Esse método descrito acima pode ocasionar alguns trechos em que a muralha se completa apenas na diagonal, mas acredito que atenda à demanda.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por kadini em Seg 07 Maio 2012, 17:56

saim amanha voce pode me ajudar com isso ja agora 10º ANO curso cientifica nota de matematica 14/15 ( podia ter melhor mas nao me apliquei no 1º periodo Sad ).

Eu agora estou sem tempo e nem li o post com atençao ( chegei a metade parei xP )

Amanha se poderes e se quisers ajuda-me. com isto, pq nao quero que as pessoas façam as coisa por min senao nao persebo um chavo xP, persiso e de um emporransinho para la chegar

kadini

Número de Mensagens : 192
Idade : 20
Data de inscrição : 02/03/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por saim em Ter 08 Maio 2012, 09:47

Beleza. Assim que você conseguir ler, me conta se entendeu a idéia.
A matemática que vamos usar é tão simples quanto dividir e multiplicar. Eu preciso que você esteja bem em matemática porque vai ser preciso VISUALIZAR o que estamos fazendo. Pra visualizar, alguns conceitos devem estar bem consolidados.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: Como criar um muralha?

Mensagem por Conteúdo patrocinado Hoje à(s) 14:35


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