Acertar apenas um componente Collider2D em objeto com mais de um Collider
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Acertar apenas um componente Collider2D em objeto com mais de um Collider
boa noite,
tenho aqui um projeto 2D com um objeto inimigo que tem PoligonCollider2D e BoxCollider2D.
cada vez que um projetil acertar esse inimigo será retirado um ponto de HP dele, mas quero que esse ponto seja reduzido somente quando o projetil acertar o Box Collider dele e não o Polligon.
criei uma animação de Hit quando o projetil colidir com ambos os PoligonCollider2D e BoxCollider2D.
o efeito hit vai acontecer quando colidir com os dois componentes collider, mas quem vai tomar dano é so o BoxCollider.
que script escrevo para determinar que um efeito, um dano, animação ou qualquer outra coisa vai acontecer somente se o Box Collider for acertado?
Grato!!
tenho aqui um projeto 2D com um objeto inimigo que tem PoligonCollider2D e BoxCollider2D.
cada vez que um projetil acertar esse inimigo será retirado um ponto de HP dele, mas quero que esse ponto seja reduzido somente quando o projetil acertar o Box Collider dele e não o Polligon.
criei uma animação de Hit quando o projetil colidir com ambos os PoligonCollider2D e BoxCollider2D.
o efeito hit vai acontecer quando colidir com os dois componentes collider, mas quem vai tomar dano é so o BoxCollider.
que script escrevo para determinar que um efeito, um dano, animação ou qualquer outra coisa vai acontecer somente se o Box Collider for acertado?
Grato!!
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
estou tentando fazer isso com Raycast hit mas não estou familiarizado ainda com Raycast.
alguem sugere algo?
alguem sugere algo?
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
Cara, se os colisores estiverem em objetos diferentes, da até pra pesquisar pelo nome:
- Código:
void OnCollisionEnter2D (Collision hit){
if(hit.transform.gameObject.name == "name"){
//do stuff
}
}
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
Marcos na verdade os colisores estão no mesmo objeto.
ele tem um poligon, um box e um circle.
meu tiro vai acertar em todos o colliders mas só o box é que vai sofrer o dano.
pensei em construir esse inimigo em partes diferentes e dar a cada uma um colisor, e depois buscar o nome/tag da parte quevai ter o boxcollider, mas vaid ar muito trabalho, então prefiro deixar um unico objeto com os 3 colliders
nesse caso nao dá p fazer com o codigo acima?
ele tem um poligon, um box e um circle.
meu tiro vai acertar em todos o colliders mas só o box é que vai sofrer o dano.
pensei em construir esse inimigo em partes diferentes e dar a cada uma um colisor, e depois buscar o nome/tag da parte quevai ter o boxcollider, mas vaid ar muito trabalho, então prefiro deixar um unico objeto com os 3 colliders
nesse caso nao dá p fazer com o codigo acima?
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
Só voce Usar Layers...Coloca os Colliders em Layers Diferentes!
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
AndyShow escreveu:Só voce Usar Layers...Coloca os Colliders em Layers Diferentes!
AndyShow posso até tentar isso depois, mas a última tentativa minha aqui foi recortar o inimigo em outras duas partes no photoshop e importar de novo p a unity, aí essas duas partes eu coloquei como filhos dentro do inimigo e fui ajustando para cada parte coincidir com o desenho do inimigo.
e a cada parte eu adicionei o poligonCollider, deixei o box somente no inimigo
cada parte dei uma tag diferente para acessar no script.
até que funcionou agora, o projetil tira dano somente no boxcollider do inimigo, mas colide normal com as duas partes sem tirar dano.
pesquisei sobre o Raycast, parece que dá para fazer isso tambem, mas é dificil e eu ainda não estou acostumado a usar raycast, raycast.hit e tal... até tentei fazer alguma coisa ma não deu certo ainda.
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
Voce pode usar um terceiro collider como trigger.
- Código:
public bool dano;
void OnTriggerEnter2D(Collider2D other) {
if (other.gameObject.tag = "Player"){
dano = true;
}
}
kalielson- ProgramadorMaster
- PONTOS : 3573
REPUTAÇÃO : 120
Idade : 40
Áreas de atuação : Mestrando em Computação
Respeito as regras :
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
kalielson obrigado pela susgestão, mas do jeito que meu script de saude do inimigo está não resolveria, eu preciso mesmo é fazer uma detecção que só quando o BoxCollider for atingido é que todo o inimiog vai sofrer dano, se o PoligonCollider sofrer a colisão não sofrerá dano.
minha solução até agora foi reimportar mais duas partes divididas do mesmo sprite do inimigo e coloca-las como filhas do prefab do inimigo.
a parte do inimigo que vai sofrer dano é o meio, essas outras duas partes separadas não e nelas coloquei a tag 'noBoss'. já o prefab tem a tag 'boss', então quando o prejetil colidir com qualquer coisa de tag boss o dano será contado. as duas partes separadas são atingidas, mas não arrancam dano, entendeu
até o momento só assim.
não sei se tem algum metodo da unity que busca apenas um tipo de collider
minha solução até agora foi reimportar mais duas partes divididas do mesmo sprite do inimigo e coloca-las como filhas do prefab do inimigo.
a parte do inimigo que vai sofrer dano é o meio, essas outras duas partes separadas não e nelas coloquei a tag 'noBoss'. já o prefab tem a tag 'boss', então quando o prejetil colidir com qualquer coisa de tag boss o dano será contado. as duas partes separadas são atingidas, mas não arrancam dano, entendeu
até o momento só assim.
não sei se tem algum metodo da unity que busca apenas um tipo de collider
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
o melhor jeito é reconstruir o player de maneira que não use colisores no mesmo transform, ou usar Layers. é a maneira correta.
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
MarcosSchultz escreveu:o melhor jeito é reconstruir o player de maneira que não use colisores no mesmo transform, ou usar Layers. é a maneira correta.
o tempo todo o player tem que ter seus colisores ativados. na verdade é o inimigo que tem que ter essa diferença nos colisores, o player eu posso deixar como está.
acho que se eu mexer nas layers não fará o efeito desejado porque o tempo todo player e inimigo vão estar mano a mano, um exatamente de frente para o outro, tanto o player como os tiros podem colidir com todo o corpo do inimigo mas para isso tem que estar na mesma layer.
mas só uma parte do corpo do inimigo é que vai sofrer dano, as outras não
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
Então a solução que resta é dividir os colisores do inimigo em 2 objetos... o segundo objeto deve ter uma void OnTriggerEnter que avisa o script principal do inimigo quando ocorreu alguma colisão.
Re: Acertar apenas um componente Collider2D em objeto com mais de um Collider
MarcosSchultz escreveu:Então a solução que resta é dividir os colisores do inimigo em 2 objetos... o segundo objeto deve ter uma void OnTriggerEnter que avisa o script principal do inimigo quando ocorreu alguma colisão.
É tipo isso que eu fiz, dividi o inimigo em duas partes, a do meio toma dano por meio do void OnTrigger.
Unica forma que achei para fazer.
Por hora resolvido, qualquer outra duvida se precisar, peço para abrir o topico de novo! Obrigado a todos!
Marc7- Mestre
- PONTOS : 3444
REPUTAÇÃO : 28
Respeito as regras :
Tópicos semelhantes
» Como fazer o clique não acertar o inimigo atrás de um objeto (hit collider)
» [TUTORIAL] Tocar mais de um áudio no mesmo objeto ( 2 ou mais AudioSource)
» [Resolvido]Como achar um objeto por componente?
» Procurar outro objeto por tag apenas dentro do objeto
» Como obter o componente do objeto q está colidindo?
» [TUTORIAL] Tocar mais de um áudio no mesmo objeto ( 2 ou mais AudioSource)
» [Resolvido]Como achar um objeto por componente?
» Procurar outro objeto por tag apenas dentro do objeto
» Como obter o componente do objeto q está colidindo?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos