Como fazer uma atração magnética

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

Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Dom 12 Ago 2012, 20:02

Olá, gostaria de saber como posso fazer para atrair objetos para o personagem!
Conseguem entender? Tipo, moedas são puxadas magneticamente pelo personagem!

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por William Lima em Dom 12 Ago 2012, 20:11

Você pode usar gravity_direction, definindo player como centro da gravidade assim:
Código:

gravity=1 //força da gravidade
gravity_direction=point_direction(x,y,obj_player.x,obj_player.y)

William Lima

Ranking : Nota A
Número de Mensagens : 426
Idade : 22
Data de inscrição : 10/09/2010
Notas recebidas : C+A+A+B+A
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 2
   : 0

http://williammustaffa.blogspot.com

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por Thomaz em Seg 13 Ago 2012, 13:30

Também pode adicionar vetores em direção do player:

No código step do player:
if instance_exists(moeda){
with(moeda){
if point_distance(x,y,other.x,other.y) < 100{
motion_add(point_direction(x,y,other.x,other.y), velocidade)
}
}
}

Para entender o código é simples:
Na primeira linha eu determinei que se a distância for menor do que 100 pixels, a próxima linha será executada.

Em seguida eu coloquei um "With" para executar um código no Objeto.

e, por fim, eu fiz com que o objeto moeda executasse a ação de magnetismo que é uma função chamada "motion_add()" que adiciona vetores no objeto para que ele se movimente.

ps: Substitua "player" pelo nome do seu personagem, "moeda" pelo nome da sua moeda e velocidade pela aceleração que você deseja.


Espero que tenha ajudado!


Última edição por Thomaz em Seg 13 Ago 2012, 21:18, editado 3 vez(es)

Thomaz

Ranking : Nota A
Número de Mensagens : 106
Idade : 21
Data de inscrição : 13/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://bigleafeater.tumblr.com/

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por willcraft2 em Seg 13 Ago 2012, 14:36

se for Top Down fasa isso, va no obj que vc quer que seja levado ate o player, cria o evento step nele e add o seguint codigo:

Código:
if distance_to_object(obj_player)<10//se a distancia do objeto player for menor que 10 pixels
{
mp_potential_step(obj_player.x,obj_player.y, 1 , false)// eu vou atras dele.
}

e pronto.

qualquer duvida so falar.

willcraft2

Ranking : Nota D
Número de Mensagens : 682
Idade : 16
Data de inscrição : 06/04/2012
Notas recebidas : D + D
Reputação : 42
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Seg 13 Ago 2012, 18:53

Galerinha, é o seguinte, minhas moedas no caso são estrelas, e o que está acontecendo é que as "moedas" estão evitando o foguete(player), não indo de encontro a ele(Isto no código do willcraft2), já nos dois códigos acima, o que acontece, é que na hora de rodar o jogo, um erro aparece dizendo que a variável "x" não foi encontrada, eu dei uma mudada no código mais, daí ele não dava erro, mas também não fazia nada além do normal!
Se vocês pudessem estar me ajudando aí eu agradeço, Aqui vai um print do meu jogo p vc terem uma noção!

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por PedroX em Seg 13 Ago 2012, 19:42

No Step do objeto estrela coloque o código do William Lima.

Obs: substitua obj_player pelo nome do objeto que é o player.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Seg 13 Ago 2012, 19:58

Pedrø escreveu:No Step do objeto estrela coloque o código do William Lima.

Obs: substitua obj_player pelo nome do objeto que é o player.

Até mais!

Não cara, eu já fiz isso, mas de todo jeito não acontece nd!

Mas vlw ae!

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por PedroX em Seg 13 Ago 2012, 20:07

Clique no botão Show Information do objeto player e do estrela. Copie ambas as informações e poste aqui, em spoilers, se forem grandes.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por willcraft2 em Seg 13 Ago 2012, 20:20

gabrielalves_3.0 escreveu:
Pedrø escreveu:No Step do objeto estrela coloque o código do William Lima.

Obs: substitua obj_player pelo nome do objeto que é o player.

Até mais!

Não cara, eu já fiz isso, mas de todo jeito não acontece nd!

Mas vlw ae!

Olha cara fiz uma engine.

willcraft2

Ranking : Nota D
Número de Mensagens : 682
Idade : 16
Data de inscrição : 06/04/2012
Notas recebidas : D + D
Reputação : 42
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Seg 13 Ago 2012, 20:29

Spoiler:
Information about object: obj_estrela

Sprite: spr_estrela
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Mask:

Create Event:
execute code:

image_speed=0.5


set the vertical speed relative to 2

Collision Event with object obj_fogo_parado:
for all Variaveis: set variable global.pontos relative to 10
change the instance into object obj_10pt, yes performing events

Collision Event with object obj_protegido:
change the instance into object obj_10pt, yes performing events
for all Variaveis: set variable global.pontos relative to 10


Spoiler:

Information about object: obj_fogo_parado

Sprite: spr_fogo_parado
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Mask:

Keyboard Event for Key:
start moving in directions 000100000 with speed set to 12

Keyboard Event for Key:
start moving in directions 000001000 with speed set to 12

Other Event: Outside Room:
restart the current room with transition effect Fade out and in
play sound sound4; looping: false

Key Release Event for Key:
start moving in directions 000010000 with speed set relative to -4

Key Release Event for Key:
start moving in directions 000010000 with speed set relative to -4

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por Need 90 em Seg 13 Ago 2012, 20:45

coloca assim no objeto estrela ou moeda seila :
Código:
if distance_to_object(obj_playe)<=25{/*Se a distancia entre a estrela e o player for menorque 25, a estrela sera puxada para o player*/
move_towards_point(obj_player.x,obj_player.y,1)}
É tão simples...

Ps : Aqui tem o download de uma engine que fiz no início do ano :
https://dl.dropbox.com/u/46263990/Atration.gmk

Need 90

Ranking : Nota B
Número de Mensagens : 787
Data de inscrição : 16/01/2012
Notas recebidas : D+A+B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Seg 13 Ago 2012, 21:28

Olha só, a mesma imagem que eu coloquei antes, agora com esse código:

if distance_to_object(obj_player)<=25{
move_towards_point(obj_player.x,obj_player.y,1)
}

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por PedroX em Seg 13 Ago 2012, 21:40

Código:
gravity_direction = point_direction(x, y, player.x, player.y);
gravity = abs( 0.25 / sin(degtorad(gravity_direction)) );

Pode substituir o 0.25 por um valor que desejar.

Testa e me fala se deu certo. Acabei de fazer o código, então não tenho certeza se funciona.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Seg 13 Ago 2012, 21:53

Bem, ele diz que a variável x é desconhecida!

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por PedroX em Seg 13 Ago 2012, 22:02

É que você deve substituir player.x e player.y por nome_objeto.x e nome_objeto.y.

Não vá colocar nome_objeto, mas sim o nome do objeto.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Seg 13 Ago 2012, 22:15

Hehe, eu sei, eu sei... Foi o que eu fiz!
Não tenho idéia porque está dando errado!

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por PedroX em Seg 13 Ago 2012, 22:54

Os objetos estão todos na room?

Coloque antes do código:

Código:
if instance_exists(nome_do_objeto)
{
código aqui
}

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por GabrielXavier em Ter 14 Ago 2012, 00:02

Não sei se você ja resolveu seu problema mas acho que não pois b=você não disse nada a resepeito!
Fiz uma engine que con certesa vai te ajudar usei o codigo que o willcraft2 postou.

Controles: Espaco acelera, setas esquerda e direita viram.

Aqui o link:
Engine de Exemplo

Flws mano precisando tamo ai...

GabrielXavier

Ranking : Nota A
Número de Mensagens : 359
Data de inscrição : 25/02/2012
Notas recebidas : A
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 1

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por Camin em Ter 14 Ago 2012, 16:16

Coloque isso na step da estrela:
Código:
if distance_to_object(obj_personagem)<120
{move_towards_point(obj_personagem.x,obj_personagem.y,3)}
Espero que ajude.
Boa sorte

Camin

Número de Mensagens : 101
Idade : 24
Data de inscrição : 26/03/2011
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por gabrielalves_3.0 em Ter 14 Ago 2012, 21:28

O problema só pode ser que o que movimenta são os objetos da cena, e o fundo, o foguete fica parado, então eu tive que usar o vertical speed nos objetos, isso deve estar atrapalhando!!

Eu vou fazer refazer tudo, pra poder dar certo! Mas valeu ai, todo mundo pela ajuda!

gabrielalves_3.0

Ranking : Nota B
Número de Mensagens : 33
Data de inscrição : 02/05/2012
Notas recebidas : B-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como fazer uma atração magnética

Mensagem por Conteúdo patrocinado Hoje à(s) 21:52


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