Como fazer IA de inimigo se desviar de tiro?
4 participantes
Página 1 de 1
Como fazer IA de inimigo se desviar de tiro?
Olá galera, eu gostaria de saber se alguém sabe como faço para minha IA do inimigo desviar de tiros do player, estou fazendo um projeto e queria aplicar esse sistema se for possível.
Já agradeço quem puder me ajudar.
Já agradeço quem puder me ajudar.
larissatds- Iniciante
- PONTOS : 3117
REPUTAÇÃO : 4
Respeito as regras :
Re: Como fazer IA de inimigo se desviar de tiro?
Desviar tipo, chegar para o lado, ou desviar tipo matrix, com animação e tals
NyanHeavyBR- MembroAvançado
- PONTOS : 3305
REPUTAÇÃO : 32
Respeito as regras :
Re: Como fazer IA de inimigo se desviar de tiro?
Vc pode fazer um Raycast que sai da I.A numa certa direção e uma distância considerável, e quando ele(Raycast) detectar um collider com a tag referente ao tiro do personagem, ela pode desviar, deslocando-se ou até mesmo pulando, isso vai depender de como vc quer que a I.A desvie.
Pra fazer isso, basta fazer com que o objeto do tiro tenha uma tag específica, por exemplo, "Bullet" e tenha corpo rígido e um collider.
Também precisa fazer com que esse objeto fique num layer específico, por exemplo "BulletLayer", para que o raio só detecte as balas e não outros colisores.
Então no script da I.A você faz o seguinte (se estiver fazendo um jogo 2D):
Daí no Inspector vc define a distância do raio, deve ser um pouco à frente do inimigo, para ele detectar a bala antes que ela o atinja.
Pra fazer isso, basta fazer com que o objeto do tiro tenha uma tag específica, por exemplo, "Bullet" e tenha corpo rígido e um collider.
Também precisa fazer com que esse objeto fique num layer específico, por exemplo "BulletLayer", para que o raio só detecte as balas e não outros colisores.
Então no script da I.A você faz o seguinte (se estiver fazendo um jogo 2D):
- Código:
public class IAScript : Monobehaviour{
public float distance;
private int layer;
private void Start(){
layer = LayerMask.GetMask("BulletLayer");
}
private void Update(){
DetectBullet();
}
private void DetectBullet(){
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, distance,
layer);
if (hit.collider != null && hit.collider.tag == "Bullet"){
// Ação de desviar aqui!
}
}
}
Daí no Inspector vc define a distância do raio, deve ser um pouco à frente do inimigo, para ele detectar a bala antes que ela o atinja.
Re: Como fazer IA de inimigo se desviar de tiro?
Desviar para o lado mesmo.NyanHeavyBR escreveu:Desviar tipo, chegar para o lado, ou desviar tipo matrix, com animação e tals
larissatds- Iniciante
- PONTOS : 3117
REPUTAÇÃO : 4
Respeito as regras :
Re: Como fazer IA de inimigo se desviar de tiro?
Muito obrigada por esclarecer minha duvida, me ajudou muito. Vou fazer no meu projeto. :DMayLeone escreveu:Vc pode fazer um Raycast que sai da I.A numa certa direção e uma distância considerável, e quando ele(Raycast) detectar um collider com a tag referente ao tiro do personagem, ela pode desviar, deslocando-se ou até mesmo pulando, isso vai depender de como vc quer que a I.A desvie.
Pra fazer isso, basta fazer com que o objeto do tiro tenha uma tag específica, por exemplo, "Bullet" e tenha corpo rígido e um collider.
Também precisa fazer com que esse objeto fique num layer específico, por exemplo "BulletLayer", para que o raio só detecte as balas e não outros colisores.
Então no script da I.A você faz o seguinte (se estiver fazendo um jogo 2D):
- Código:
public class IAScript : Monobehaviour{
public float distance;
private int layer;
private void Start(){
layer = LayerMask.GetMask("BulletLayer");
}
private void Update(){
DetectBullet();
}
private void DetectBullet(){
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, distance,
layer);
if (hit.collider != null && hit.collider.tag == "Bullet"){
// Ação de desviar aqui!
}
}
}
Daí no Inspector vc define a distância do raio, deve ser um pouco à frente do inimigo, para ele detectar a bala antes que ela o atinja.
larissatds- Iniciante
- PONTOS : 3117
REPUTAÇÃO : 4
Respeito as regras :
Re: Como fazer IA de inimigo se desviar de tiro?
Larissa, o método acima pode não funcionar corretamente se a velocidade do projétil for muito alta, a Unity trabalha com uma frequência de atualização mais baixa quando se trata de física. em 1 frame do jogo o projétil pode ter passado sem a física detectar.
Caso isso ocorra no teu projeto, uma outra maneira seria o player disparar o raycast no centro da mira, se o inimigo estivesse nele no momento do disparo, e se o player pressionasse o botão de disparar, então o inimigo em questão executaria a animação. Dessa forma você não ficará dependente do bom funcionamento da física da Unity, boa sorte no projeto!
Caso isso ocorra no teu projeto, uma outra maneira seria o player disparar o raycast no centro da mira, se o inimigo estivesse nele no momento do disparo, e se o player pressionasse o botão de disparar, então o inimigo em questão executaria a animação. Dessa forma você não ficará dependente do bom funcionamento da física da Unity, boa sorte no projeto!
Isabela- Avançado
- PONTOS : 2835
REPUTAÇÃO : 260
Idade : 24
Respeito as regras :
Re: Como fazer IA de inimigo se desviar de tiro?
Eu segui as duas dicas e deu super certo. Coloquei o raycast no player que no meu caso dava mais certo... muito obrigada pela ajuda :Disah escreveu:Larissa, o método acima pode não funcionar corretamente se a velocidade do projétil for muito alta, a Unity trabalha com uma frequência de atualização mais baixa quando se trata de física. em 1 frame do jogo o projétil pode ter passado sem a física detectar.
Caso isso ocorra no teu projeto, uma outra maneira seria o player disparar o raycast no centro da mira, se o inimigo estivesse nele no momento do disparo, e se o player pressionasse o botão de disparar, então o inimigo em questão executaria a animação. Dessa forma você não ficará dependente do bom funcionamento da física da Unity, boa sorte no projeto!
larissatds- Iniciante
- PONTOS : 3117
REPUTAÇÃO : 4
Respeito as regras :
Tópicos semelhantes
» Como fazer pro meu tiro matar o inimigo?
» COMO POSSO FAZER O INIMIGO MORRER COM TIRO?
» Como fazer o Tiro do "INIMIGO" seguir o Flip de uma Arma ?
» Como ''stunar'' inimigo com um tiro?
» Como eu faria o inimigo reagir a um tiro ?
» COMO POSSO FAZER O INIMIGO MORRER COM TIRO?
» Como fazer o Tiro do "INIMIGO" seguir o Flip de uma Arma ?
» Como ''stunar'' inimigo com um tiro?
» Como eu faria o inimigo reagir a um tiro ?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos