Prefabs tumultuados e layer dinâmica! 2D
3 participantes
Página 1 de 1
Prefabs tumultuados e layer dinâmica! 2D
Fala ae galera, firmeza?!
Bom, estou com os seguintes problemas que estão empacando meu projeto da facul, espero que me dêem uma luz, hehehe...
Tenho Game Objects que são spawners de prefabs:
Um spawna prefabs que matam o personagem, outro que spawna prefabs que dá pontos ao personagem, e outro,
que spawna um prefab a cada 30 seg e leva o personagem para outra fase.
Acontece que alguns prafabs são spawnados em cima dos outros e não queria que isso acontecesse.
Tentei com o [ col.gameObject.compareTag ("Obj Que Não Sera destruido") ], só que tudo que toca ele é destruído, até o Player, e
se for pensar, destruir os objetos também não é o ideal, mas foi o mais proximo de "solução" do problema que cheguei.
O outro problema é como atruibuir layer dinâmica para um prefab, por exemplo, se o prefab for spawnado em Y=6 (em cima) o objeto
ficaria atras em relação ao Player, se spawnado em Y=3 (em baixo) o objeto ficaria na frente em relação ao Player.
Imaginei que tivesse alguma sintaxe que acessasse o Order in Layer do SpriteRender, mas não consegui.
Desde já agradeço qualquer ajuda.
Bom, estou com os seguintes problemas que estão empacando meu projeto da facul, espero que me dêem uma luz, hehehe...
Tenho Game Objects que são spawners de prefabs:
Um spawna prefabs que matam o personagem, outro que spawna prefabs que dá pontos ao personagem, e outro,
que spawna um prefab a cada 30 seg e leva o personagem para outra fase.
Acontece que alguns prafabs são spawnados em cima dos outros e não queria que isso acontecesse.
Tentei com o [ col.gameObject.compareTag ("Obj Que Não Sera destruido") ], só que tudo que toca ele é destruído, até o Player, e
se for pensar, destruir os objetos também não é o ideal, mas foi o mais proximo de "solução" do problema que cheguei.
O outro problema é como atruibuir layer dinâmica para um prefab, por exemplo, se o prefab for spawnado em Y=6 (em cima) o objeto
ficaria atras em relação ao Player, se spawnado em Y=3 (em baixo) o objeto ficaria na frente em relação ao Player.
Imaginei que tivesse alguma sintaxe que acessasse o Order in Layer do SpriteRender, mas não consegui.
Desde já agradeço qualquer ajuda.
ysrogers- Iniciante
- PONTOS : 2970
REPUTAÇÃO : 0
Respeito as regras :
Re: Prefabs tumultuados e layer dinâmica! 2D
Quanto ao primeiro problema, depende da estrutura do seu jogo... as vezes não é necessário dar spawn em algo, mas você pode fazer uma verificação simples antes do spawn...
Sorteie uma posição aleatória (vector2 ou 3), e faça uma verificação (Vector3.Distance) para checar a distância desta posição sorteada para os outros objetos já existentes... se estiver mais longe do que 1 unidade, ai você instancia. Caso contrário, você manda fazer um random novamente.
Quanto ao segundo problema, basta setar a layer ao objeto da maneira que quiser... Da uma olhada nisto:
https://docs.unity3d.com/ScriptReference/GameObject-layer.html
Sorteie uma posição aleatória (vector2 ou 3), e faça uma verificação (Vector3.Distance) para checar a distância desta posição sorteada para os outros objetos já existentes... se estiver mais longe do que 1 unidade, ai você instancia. Caso contrário, você manda fazer um random novamente.
Quanto ao segundo problema, basta setar a layer ao objeto da maneira que quiser... Da uma olhada nisto:
https://docs.unity3d.com/ScriptReference/GameObject-layer.html
Re: Prefabs tumultuados e layer dinâmica! 2D
Muito obrigado!
ysrogers- Iniciante
- PONTOS : 2970
REPUTAÇÃO : 0
Respeito as regras :
Re: Prefabs tumultuados e layer dinâmica! 2D
Fala Brother! Se você quer instanciar vários inimigos de uma vez, e não quer que eles fiquem tudo tumultuados, eu tenho uma ideia de script.
Agora você deve setar o podeSpawnar como true em seu script.
Note que o que está controlando as posições do spawn é a variável posSpawn, e na linha posSpawn.x = transform.position.x + (i * qntInimigos); eu utilizei o eixo "x" mas você pode trocar para o eixo que quiser.
Eu não testei o script, mas creio que vai funcionar. Adeus man, espero ter ajudado!
- Código:
public GameObject Enemy;
public float distEntreEles = 3;
public float qntInimigos = 5;
public bool podeSpawnar;
private Vector3 posSpawn;
void Start()
{
posSpawn = transform.position;
}
void Update()
{
if(podeSpawnar)
{
for(i = 0; i < qntInimigos; i ++)
{
posSpawn = transform.position;
posSpawn.x = transform.position.x + (i * distEntreEles);
Instantiate(enemy, posSpawn, Quaternion.identity);
}
podeSpawnar = false;
}
}
Agora você deve setar o podeSpawnar como true em seu script.
Note que o que está controlando as posições do spawn é a variável posSpawn, e na linha posSpawn.x = transform.position.x + (i * qntInimigos); eu utilizei o eixo "x" mas você pode trocar para o eixo que quiser.
Eu não testei o script, mas creio que vai funcionar. Adeus man, espero ter ajudado!
George Lucas Vieira- Avançado
- PONTOS : 3395
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Tópicos semelhantes
» Luz dinamica
» Lista de Menu Dinâmica
» Tutorial Iluminação Estática+Dinâmica
» Personagem com câmera dinâmica (movimentos ao se mexer)
» Touch movendo objeto através duma Layer
» Lista de Menu Dinâmica
» Tutorial Iluminação Estática+Dinâmica
» Personagem com câmera dinâmica (movimentos ao se mexer)
» Touch movendo objeto através duma Layer
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos