Bot atirar no player apenas se estiver "vendo" ele

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

Bot atirar no player apenas se estiver "vendo" ele

Mensagem por peixoto em Dom 19 Jan 2014, 21:50

Como faço para que o obj_inimigo checar se o player está dentro do "campo de visão"(ou seja em frente) a ele para executar o código que o faz atirar?(Sendo que esse obj_inimigo fica mudando de angulo conforme anda, sendo para direita = 0º).

peixoto

Ranking : Nota D
Número de Mensagens : 911
Idade : 21
Data de inscrição : 14/02/2010
Notas recebidas : D
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por WellingtonBecker em Dom 19 Jan 2014, 21:55

Ola amigo, tente esse código:

STEP DO INIMIGO

Código:
if distance_to_object(obj_player) < distancia { faz sua ação}
:

WellingtonBecker

Ranking : Nota D
Número de Mensagens : 820
Idade : 35
Data de inscrição : 09/05/2013
Notas recebidas : D
Reputação : 105
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por peixoto em Dom 19 Jan 2014, 22:31

Isso ja conheço.
O que quero é que caso ele esteja a x pixels de distancia(essa parte ja sei) e olhando na direção do player(não no ponto exato, só na direção(direita,esquerda,cima ou baixo)) que ele execute o script de atirar.

peixoto

Ranking : Nota D
Número de Mensagens : 911
Idade : 21
Data de inscrição : 14/02/2010
Notas recebidas : D
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por Object em Dom 19 Jan 2014, 22:45

Olá , eu acho que posso ajudar coloque isto no step do inimigo :
Código:
if distance_to_object(obj_player)<=100 and place_meeting(x-100,y,obj_player{
atirar=true//Olhe este código simples, se a distancia para o obj_player for menor que 100 e o obj_player estiver perto do lado esquerdo dele ele atira eu acho que vai funfar

CASO NÃO FUNCIONE

Crie uma linha quase que invisivel que só você sabe que ela esta lá e faça ela seguir o inimigo , crie um evento de create na linha e coloque:
Código:
global.atirar=false
Agora crie um evento de colisão com o obj_player e coloque:
Código:
global.atirar =true
agora vá no inimigo no create e coloque:
Código:
global.atirar=false
agora vá no step e coloque:
Código:
if global.atirar=true{
image_angle=point_direction(x,y,obj_player)//vai fazer ele olhar para o player
instance_create(x,y,obj_bala)//ele vai criar a bala

Agora se eu te ajudei POR FAVOR clique na mãozinha de beleza do lado esquerdo
do meu perfil vai me ajudar

Object

Número de Mensagens : 29
Data de inscrição : 14/01/2014
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por peixoto em Seg 20 Jan 2014, 08:53

Não sei se funciona desse jeito que citou object.
Eu usei o metodo(que tinha esquecido ._.)
Código:
obj_player.x>x //ver se está a direita
obj_player.x<x //ver se esta a esquerda
obj_player.y>y //ver se esta abaixo
obj_player.y<y //ver se está acima
.

Me lembrei desse "modo" ontem a noite quando fui dormir Razz
Mas ainda assim obrigado por tentar ajudar.

peixoto

Ranking : Nota D
Número de Mensagens : 911
Idade : 21
Data de inscrição : 14/02/2010
Notas recebidas : D
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por AlexBosquin em Seg 20 Jan 2014, 13:27

eu vou precisar disso daki uns dias eheheheeh, então te recomendo criar um var que cheque o lado do player e do inimigo então nos dois crie:

CREATE:
Código:

side = image_xscale // o image_xscale retorna -1 para esquerda e 1 para a direita

então depois de por esse codigo no player e no inimigo faça isso no obj_inimigo:
STEP:
Código:

if (obj_player.side=1 && self.side=-1) or (obj_player.side=-1 && self.side=1) // se  o player estiver olhando para o inimigo...
{
//o que vc quer que aconteça
}

Ai lembra de adicionar o codigo de checar a distancia tbm xD, ah não precisa de usar o "self." pq como já esta no obj_inimigo não precisa mas eu ponho pra deixar mais organizado!

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por chicoweb em Seg 20 Jan 2014, 16:24

Usa o método carioca  Cool :

Vamos supor os seguintes objetos:

obj_player
obj_inimigo
obj_inimigo_visao

1) Cria uma imagem assim:



Cria um objeto obj_inimigo_visao, e põe a imagem nesse objeto.

2) Step do obj_inimigo_visao:

Código:
// Roda conforme o inimigo
x = obj_inimigo.x
y = obj_inimigo.y
image_angle = obj_inimigo.image_angle

3) Create do obj_inimigo:

Código:
// Cria o campo de visão
instance_create(x,y,obj_inimigo_visao)

4) Com com iso ai quando vc rodar o jogo vai ver que cada inimigo tem uma visão como se fosse uma lanterna acesa na frente dele.

5) Pronto, agora cria o evento Collision (com o player) no obj_inimigo_visao, e dentro dele o código do seu tiro.

OBS: Para ocultar a visão é só colocar no create do obj_inimigo_visao:

Código:
visible = false

Rápido, rasteiro, sem código complicado, só na maciota kkkkkk

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por AlexBosquin em Seg 20 Jan 2014, 18:59

chico esse metodo aumentaria alguns "bytes" no jogo kk, pois seria mais um objeto no game o outro metodo que eu disse não iria usar um objeto a mais, e como teria o codigo "if distance_to_object(obj_player)" ele poderia alterar a distancia que o inimigo ia checar para começar a atacar apenas alterando o valor na frente do codigo e no seu metodo teria que redimensionar a imagem da "lanterna". Mas claro fica a critério de cada um, mas quanto mais fácil e barato for melhor xD

AlexBosquin

Ranking : Nota C
Número de Mensagens : 621
Idade : 20
Data de inscrição : 10/07/2012
Notas recebidas : C
Reputação : 35
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://www.craftstudios.com.br

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por peixoto em Seg 20 Jan 2014, 19:54

Cara eu ja consegui ._.
Eu usei basicamente esses códigos:
http://gmbr.forumeiros.com/t28797-ia-top-down-estilo-rpg-e-shooter
(para andar e o obj saber para qual lado está virado)
e o script que citei ai acima(neste tópico aqui)

peixoto

Ranking : Nota D
Número de Mensagens : 911
Idade : 21
Data de inscrição : 14/02/2010
Notas recebidas : D
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bot atirar no player apenas se estiver "vendo" ele

Mensagem por Conteúdo patrocinado Hoje à(s) 05:38


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