Página 1 de 1

Ajuda com ataque por mouse

Enviado: Seg Dez 10, 2018 12:03 pm
por rafarp23
Olá galera, preciso de uma ajuda com o ataque por mouse!
É o seguinte quero um sistema para atacar com o mouse direito, fiz um usando o x, y do mouse com o x e y do player, só que ele solta tudo junto, como faço para atirar na direção do mouse, sem diagonais?

Quem puder ajudar agradeço muito!

Re: Ajuda com ataque por mouse

Enviado: Seg Dez 10, 2018 6:34 pm
por None
Eu não entendi o que você quer fazer.

Tem como colocar o código aqui e explicar o que você quer que ele faça?

Re: Ajuda com ataque por mouse

Enviado: Ter Dez 11, 2018 11:47 am
por rafarp23
o código é

Código: Selecionar todos

if mouse_x > x{
instance_create(x,y, obj_tiroRight);
}else if mouse_x < x{
instance_create(x,y, obj_tiroLeft);
}else if mouse_y > y{
instance_create(x,y, obj_tiroUp);
}else if mouse_y < y{
instance_create(x,y, obj_tiroDown);
}
Tipo se eu ataco ele solta o tiro para direita e baixo junto, quero que ele atira apenas uma vez quando eu clickar com o mouse direito, e que seja na direção que o mouse está!

Re: Ajuda com ataque por mouse

Enviado: Ter Dez 11, 2018 4:18 pm
por None
Entendi, você quer que ele atire na direção do mouse, porém você não quer usar o point_direction porque você não quer atirar em ângulo, correto?

A resposta é que você usa o point direction do mesmo jeito hahaha.

Fica assim
dir = point_direction(x, y, mouse_x, mouse_y);
Aqui eu peguei a direção do mouse em relação a mim.

Var dir2 = (dir div 90) * 90;
Aqui eu dividi a direção que eu recebi por 90 com o div (que retorna um número inteiro), ou seja eu recebi ou 0 ou 1 ou 2 ou 3 e depois eu multipliquei isso por 90 retornando a direção sem ângulo.

var tiro = instance_create(x, y, obj_tiro)
tiro.direction = dir2;
tiro.speed = 5;
Agora eu criei um tiro para a direção que eu quero com 5 de velocidade.

Espero ter ajudado

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 12:07 pm
por rafarp23
Noosa mano muito obrigado mesmo, deu certo aqui!

EDIT
Só tem um problema,a ele ataca na direção certa, mas o mouse tem que ficar na linha reta do x e y, queria que ele atacasse sem estar na reta do x e y do player, tipo se tivece uma area grande que nessa area seria o lado que eu fosse atirar.

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 2:41 pm
por None
Oo
O mouse não precisa ficar em linha reta com o modelo que eu te dei.

Tem como você copiar o seu código inteiro e colar aqui para eu dar uma olhada?

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 3:24 pm
por rafarp23
O código está assim:

Código: Selecionar todos

if mouse_check_button_pressed(mb_right) && attackAble = "false"{
attackAble = "true";

var dir = point_direction(x, y-24, mouse_x, mouse_y);
var dir2 = (dir div 90) * 90;

if class == "Archer"{
    var attack = instance_create_layer(x, y, "Instances", obArrow)
 audio_play_sound(soArrow,1,false);
}else if class == "Gladiator"{
 var attack = instance_create_layer(x, y, "Instances", obSlashR)
 audio_play_sound(soSword,1,false);
}

attack.direction = dir2;
attack.speed = 3;
}
O centro do player está sobre o meio dos pés

O exemplo que pretendo é como a imagem abaixo:
Imagem

Se ou mouse estiver sobre a area azul que é o Y do player ele ataca na direção do mouse, cima ou baixo.
E se estiver sobre a area vermelha ele ataca para esquerda ou direita.

O jeito que está atacando está diferente, o mouse tem que estar pra baixo do pé e pra direita para atacar para baixo, e se estiver pra cima do player e na direita ele ataca pra direita!

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 4:31 pm
por None
Tenta sem o -24 no y para ver no que da, provavelmente a sua tentativa de centralização "atrapalhou" os cálculos do game maker.

Qualquer coisa faz o seguinte
If (ABS(mouse_x - x) <= sprite_width)
{
//Mouse está dentro de mim horizontalmente
If(mouse_y > y)
{
tiro para baixo
}
else
{
tiro para cima
}
}
else
{
If(mouse_x > x)
{
tiro para direira
}
else
{
tiro para esquerda
}
}


Aqui eu estou checando se o mouse está horizontalmente ocupando o mesmo espaço que o player, se estiver quer dizer que vou atirar para cima ou para baixo (com base na sua figura).
Se ele não estiver quer dizer que vou atirar para os lados.

Eu acho que o código da direção é mais elegante, mas este outro modelo deve funcionar bem

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 5:47 pm
por rafarp23
Aeee, esse código deu certo, agora ta atacando normal, muito obrigado pela sua ajuda!

Sabe como posso criar um inventório por tipo? ex: armor, weapon, shield
ou se não criar algum objeto que se eu arrastar outro objeto com o tipo que a box requer em cima dela ele fica lá como se eu tivece equipado!

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 7:04 pm
por None
Nessas últimas semanas eu fiz um sistema de inventário para o meu curso, é mais ou menos o que você quer e da para implementar o que você quer nele, mas deu trabalho (foram quase 20 vídeos ao todo)

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 7:26 pm
por rafarp23
Não precisa ser o inventário todo, só quero tipo Slots por tipo, que se eu pegar um objeto com o tipo igual do slot e puxar para o Slot ele fique como equipado, mas tem algum link dos videos do seu inventário ou mesmo pode me ajudar a fazer, pois eu já criei os global dos items e dos status que serao adicionados ao jogador como defesa, força, agilidade, etc... e também ja criei o visual equip, só falta o inventário para ser equipado, desequipado ou dropado. o resto de add os status e o visual no jogador eu ja tenho feito e configurado.

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 8:55 pm
por None
https://goo.gl/2RjHaj

Acesse o link, eu acabei deixar como prévia gratuita os vídeos sobre a criação de sistema de inventário.
Então você só precisa ir na grade curricular e ir até a aula 250 mais ou menos

O conteúdo é relativamente complexo.

Re: Ajuda com ataque por mouse

Enviado: Qua Dez 12, 2018 9:59 pm
por rafarp23
Muito obrigado, agradeço a ajuda!