[RESOLVIDO] LayerMask
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] LayerMask
pessoa uma duvida aqui.
como eu verifico esse tipo de colisão ow identificação ?
Collider[] hits = Physics.OverlapSphere(transform.position, inimigo, LayerMask.GetMask("inimigo"));
foreach (Collider hit in hits)
{
}
como eu verifico esse tipo de colisão ow identificação ?
Collider[] hits = Physics.OverlapSphere(transform.position, inimigo, LayerMask.GetMask("inimigo"));
foreach (Collider hit in hits)
{
}
hellside- Membro
- PONTOS : 1851
REPUTAÇÃO : 17
Respeito as regras :
Re: [RESOLVIDO] LayerMask
Explica mais, o que exatamente deseja fazer, não ta muito claro.
Entendi que é a layer de inimigos, mas por que exatamente quer identificar um inimigo específico ?
Entendi que é a layer de inimigos, mas por que exatamente quer identificar um inimigo específico ?
Re: [RESOLVIDO] LayerMask
caramba.... acabei de mexer hoje com layermask kkkk eu percebi que só acessa através do gameObject.Layer
https://docs.unity3d.com/ScriptReference/GameObject-layer.html
ai vc define o valor do layermask q vc setou, eu identifico assim..
https://docs.unity3d.com/ScriptReference/GameObject-layer.html
ai vc define o valor do layermask q vc setou, eu identifico assim..
Re: [RESOLVIDO] LayerMask
e que se eu n especificar o inimigo q foi identificado ele fica pulando de um em outro ... tipo imagina q vc é um personagem q identifica uma classe de inimigo a sua volta ..... sempre q entrar vários inimigos na sua range vc n iria conseguir focar um apenas vc ficaria identificando vários a casa segundo por isso eu preciso usar esse modo de identificar apenas para encontrar um inimigo e assim q ele n existisse mais ow sai-se da range esse modo de identificação voltaria a funcionar e se caso tiver mais inimigos dentro da range vc selecionaria ele....dutrabr100 escreveu:Explica mais, o que exatamente deseja fazer, não ta muito claro.
Entendi que é a layer de inimigos, mas por que exatamente quer identificar um inimigo específico ?
hellside- Membro
- PONTOS : 1851
REPUTAÇÃO : 17
Respeito as regras :
Re: [RESOLVIDO] LayerMask
mano n to conseguindo pois minha layer e string é como se fosse uma tag saca.. ae eu preciso colocar um if para verificar que se o meu overLapspher selecionou um inimigo correto ele tem q para de procurar ate q esse inimigo q ele selecionou n esteja mais na range ow n exista mais.stratengine escreveu:caramba.... acabei de mexer hoje com layermask kkkk eu percebi que só acessa através do gameObject.Layer
https://docs.unity3d.com/ScriptReference/GameObject-layer.html
ai vc define o valor do layermask q vc setou, eu identifico assim..
hellside- Membro
- PONTOS : 1851
REPUTAÇÃO : 17
Respeito as regras :
Re: [RESOLVIDO] LayerMask
ué pow... pelo exemplo que vc me deu ai, existem vários inimigos no raio de detecção do player, ai vc quer identificar só um deles , usa um if() no caso de um trigger seria assim>
if(other.tag == "Inimigo" && other.gameObject.Layer == 3)
nesse caso estou supondo q eles tem a tag "inimigo", tendo os 2 inimigos a mesma tag, mas a layer deles é diferente, coloquei 3 só de um exemplo como se vc criou nova layer, e ela está na posição 3
if(other.tag == "Inimigo" && other.gameObject.Layer == 3)
nesse caso estou supondo q eles tem a tag "inimigo", tendo os 2 inimigos a mesma tag, mas a layer deles é diferente, coloquei 3 só de um exemplo como se vc criou nova layer, e ela está na posição 3
Re: [RESOLVIDO] LayerMask
em relação a sua layer ser uma "string", todas as layers são, so que vc clica em um objeto, vai em layers ai tem todas as layers disponíveis, se a sua tiver na posição 4 é esse o valor da sua, vc acessa a layer "Jubilou" que está na posição 3, ai eu chamo gameObject.Layer == 3;hellside escreveu:mano n to conseguindo pois minha layer e string é como se fosse uma tag saca.. ae eu preciso colocar um if para verificar que se o meu overLapspher selecionou um inimigo correto ele tem q para de procurar ate q esse inimigo q ele selecionou n esteja mais na range ow n exista mais.stratengine escreveu:caramba.... acabei de mexer hoje com layermask kkkk eu percebi que só acessa através do gameObject.Layer
https://docs.unity3d.com/ScriptReference/GameObject-layer.html
ai vc define o valor do layermask q vc setou, eu identifico assim..
Lembrando que sempre começa contar pela layer 0
Re: [RESOLVIDO] LayerMask
no caso de seu foco ser em apenas um dos inimigos, tenta criar uma variavei> gameObject InimigoAtual; ai vc armazena o inimigo que entrou primeiro e da regra do IF que vc definiu, os outros inimigos que entrarem na detecção do seu player, vc faz uma verificação pra ver se esse InimigoAtual == null; vc faz um script pra jogar nos inimigos, que antes dele morrer, ou seja, antes dele destruir o próprio objeto, ele acessa esse script do player, e muda o InimigoAtual = null; ai ele se destroy. Com isso seu player ja pode acrescentar outro inimigo à variável InimigoAtual..... e por ai vai, até vc matar todos os inimigos.
Re: [RESOLVIDO] LayerMask
- Código:
gameObject InimigoAtual;
//se for um trigger
OnTriggerEnter(Collisor other)
{
if(other.tag == "Inimigo" && other.gameObject.Layer == 3)
{
if(InimigoAtual == null)
{
InimigoAtual =other.gameObject;
}
}
}
Re: [RESOLVIDO] LayerMask
stratengine escreveu:
- Código:
//ScriptDoPlayer
gameObject InimigoAtual;
//se for um trigger
OnTriggerEnter(Collisor other)
{
if(other.tag == "Inimigo" && other.gameObject.Layer == 3)
{
if(InimigoAtual == null)
{
InimigoAtual =other.gameObject;
}
}
}
-------------------------------------------------
script que vai ficar dentro dos inimigos
void Morri()
{
//supondo que o nome do seu player está "Player"
gameObject.Find("Player").transform.GetComponent<ScriptDoPlayer>().InimigoAtual = null;
Destroy(this);
}
Re: [RESOLVIDO] LayerMask
hellside escreveu:e que se eu n especificar o inimigo q foi identificado ele fica pulando de um em outro ... tipo imagina q vc é um personagem q identifica uma classe de inimigo a sua volta ..... sempre q entrar vários inimigos na sua range vc n iria conseguir focar um apenas vc ficaria identificando vários a casa segundo por isso eu preciso usar esse modo de identificar apenas para encontrar um inimigo e assim q ele n existisse mais ow sai-se da range esse modo de identificação voltaria a funcionar e se caso tiver mais inimigos dentro da range vc selecionaria ele....dutrabr100 escreveu:Explica mais, o que exatamente deseja fazer, não ta muito claro.
Entendi que é a layer de inimigos, mas por que exatamente quer identificar um inimigo específico ?
bem faz com a seguinte logica:
- Código:
GameObject AlvoSelecionado;
bool PerseguindoAlvo = false;
if(PerseguindoAlvo){
//apenas verifica a distancia que esta do alvo.
//se a distancia for maior que raio de Detecção:
PerseguindoAlvo = false;
//senão continua a perseguicao/ataque..
} else{
faz a Detecção com o OverlapSphere
}
Re: [RESOLVIDO] LayerMask
caramba pessoal vlw ... n sei se vou fazer exatamente como disseram ... mas muito do q me falaram foi de grande ajuda deu pra entender perfeitamente o principio da layer eu realmente n estava entendo como funciona direito agora q consigo entender consigo arruma meu codigo vlw mesmo pessoal... qualquer coisa precisar estou ai.
hellside- Membro
- PONTOS : 1851
REPUTAÇÃO : 17
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Utilidade de LayerMask
» Alguém mais tem tido problemas com Layermask [v2019.4.17]
» [RESOLVIDO] Fps em C#
» [RESOLVIDO] Verificar se um texto é um email [RESOLVIDO]
» [RESOLVIDO] De me uma luz
» Alguém mais tem tido problemas com Layermask [v2019.4.17]
» [RESOLVIDO] Fps em C#
» [RESOLVIDO] Verificar se um texto é um email [RESOLVIDO]
» [RESOLVIDO] De me uma luz
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos