Dar dano no inimigo ao clicar nele
2 participantes
Página 1 de 1
Dar dano no inimigo ao clicar nele
Estou fazendo um Idle FPS 2D na unity, gostaria de saber como eu faço para dar dano no inimigo ao clicar nele (seja por tag ou por qualquer coisa), pois não achei nada disso relacionado na internet.
darkrj- Avançado
- PONTOS : 2324
REPUTAÇÃO : 15
Respeito as regras :
Re: Dar dano no inimigo ao clicar nele
Boa noite mano,
No caso "Clicar nele" estiver se referindo ao mouse voçe pode usar o RaycastHit2D
Um exemplo básico:
Script Do RayCast no mouse
Script do Inimigo:
resumindo: se o mouse clicar no inimigo vai reduzir a vida dele pelo valor dado na funcao SetCharLife(ValorAreduzir)
No caso "Clicar nele" estiver se referindo ao mouse voçe pode usar o RaycastHit2D
Um exemplo básico:
Script Do RayCast no mouse
- Código:
public class RayCast : MonoBehaviour
{
//Joga em Qualquer Objeto
private float distancia=50f; //distancia do raio
private void Update()
{
//ao clicar no botao mouse esquerdo
if (Input.GetMouseButtonDown(0))
{
Vector3 m = Input.mousePosition; //pega posicao mouse
Ray p = Camera.main.ScreenPointToRay(m); //Se der erro coloque a tag da camera para MainCamera
RaycastHit2D hit = Physics2D.Raycast(p.origin, p.direction, distancia);
Debug.DrawRay(p.origin, p.direction * distancia, Color.red); //Desenha O Raio Para ver se está funcionado
if(hit.collider!=null){
//checar a tag do inimigo
if (hit.collider.gameObject.CompareTag("Inimigo"))
{
hit.collider.GetComponent<Inimigo>().SetCharLife(-1); //dar dano no inimigo
}
}
}
}
}
Script do Inimigo:
- Código:
public class Inimigo : MonoBehaviour
{
static int vida = 100; //vida maxima do inimigo
private void Update()
{ //se a vida for menor ou igual a zero morrer
if (vida <= 0)
{
Morreu();
}
}
void Morreu()
{
//Fazer alguma coisa
}
//Funcao personalizada
public void SetCharLife(int valor)
{
vida = vida + valor; //alterar a vida do inimigo(vida-valor)
}
}
resumindo: se o mouse clicar no inimigo vai reduzir a vida dele pelo valor dado na funcao SetCharLife(ValorAreduzir)
Re: Dar dano no inimigo ao clicar nele
Boa tarde, o código acabou não funcionando. No caso eu criei uma função chamada DeathState() no script do inimigo, onde caso ele tome 1 hit, a função irá destruir o game object, o problema é que no seu script, na hora de passar o raycasthit2d, não há .origin e nem .distance, não aparece nem pra completar no editor. Será que poderia ser alguma biblioteca que não foi importada?FelipeSouza11 escreveu:Boa noite mano,
No caso "Clicar nele" estiver se referindo ao mouse voçe pode usar o RaycastHit2D
Um exemplo básico:
Script Do RayCast no mouse
- Código:
public class RayCast : MonoBehaviour
{
//Joga em Qualquer Objeto
private float distancia=50f; //distancia do raio
private void Update()
{
//ao clicar no botao mouse esquerdo
if (Input.GetMouseButtonDown(0))
{
Vector3 m = Input.mousePosition; //pega posicao mouse
Ray p = Camera.main.ScreenPointToRay(m); //Se der erro coloque a tag da camera para MainCamera
RaycastHit2D hit = Physics2D.Raycast(p.origin, p.direction, distancia);
Debug.DrawRay(p.origin, p.direction * distancia, Color.red); //Desenha O Raio Para ver se está funcionado
if(hit.collider!=null){
//checar a tag do inimigo
if (hit.collider.gameObject.CompareTag("Inimigo"))
{
hit.collider.GetComponent<Inimigo>().SetCharLife(-1); //dar dano no inimigo
}
}
}
}
}
Script do Inimigo:
- Código:
public class Inimigo : MonoBehaviour
{
static int vida = 100; //vida maxima do inimigo
private void Update()
{ //se a vida for menor ou igual a zero morrer
if (vida <= 0)
{
Morreu();
}
}
void Morreu()
{
//Fazer alguma coisa
}
//Funcao personalizada
public void SetCharLife(int valor)
{
vida = vida + valor; //alterar a vida do inimigo(vida-valor)
}
}
resumindo: se o mouse clicar no inimigo vai reduzir a vida dele pelo valor dado na funcao SetCharLife(ValorAreduzir)
darkrj- Avançado
- PONTOS : 2324
REPUTAÇÃO : 15
Respeito as regras :
Re: Dar dano no inimigo ao clicar nele
Se falta biblioteca nao sei amigo aqui usei só a padrao da unity "using UnityEngine;" e esta funcionado normalmnte, voce fez alguma modificaçao no script? ou algo do tipo,
Obs: estou usando a unity 2019.4.15 se for uma versao anterior deve ser outra chamada/metodo
sugiro que tente criar um projeto novo para testar e ve se dar a mesma coisa,
Obs: estou usando a unity 2019.4.15 se for uma versao anterior deve ser outra chamada/metodo
sugiro que tente criar um projeto novo para testar e ve se dar a mesma coisa,
Re: Dar dano no inimigo ao clicar nele
Utilizo a 2020.1, será que foi descontinuado? Bom, irei tentar realizar mais tentativas aqui.FelipeSouza11 escreveu:Se falta biblioteca nao sei amigo aqui usei só a padrao da unity "using UnityEngine;" e esta funcionado normalmnte, voce fez alguma modificaçao no script? ou algo do tipo,
Obs: estou usando a unity 2019.4.15 se for uma versao anterior deve ser outra chamada/metodo
sugiro que tente criar um projeto novo para testar e ve se dar a mesma coisa,
darkrj- Avançado
- PONTOS : 2324
REPUTAÇÃO : 15
Respeito as regras :
Re: Dar dano no inimigo ao clicar nele
Verifiquei e achei o problema. Meu Unity estava com algum bug, ao reinstalá-lo, tudo se resolveu. Muito obrigado pela ajuda!
darkrj- Avançado
- PONTOS : 2324
REPUTAÇÃO : 15
Respeito as regras :
Tópicos semelhantes
» mudar objeto ao clicar nele
» desativar botão após clicar nele
» Ataque e Dano no Inimigo [HELP]
» Como fazer um objeto dar dano contínuo quando encostar nele?
» dano inimigo 2D
» desativar botão após clicar nele
» Ataque e Dano no Inimigo [HELP]
» Como fazer um objeto dar dano contínuo quando encostar nele?
» dano inimigo 2D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos