Ativar o objeto correto em Clones.
2 participantes
Página 1 de 1
Ativar o objeto correto em Clones.
Produzindo o código para meu inimigo fazer um avanço na direção do player, consegui fazer funcionar normal quando estava trabalhando somente com um inimigo, mas quando utilizei o Instatiate para criar os clones, o avanço estava sendo realizado pelo primeiro clone criado e não pelo que chegou perto.
Tentei colocar todos os inimigos criados em uma Lista para posteriormente conferir qual inimigo colidiu, mas não estou conseguindo selecionar o inimigo certo.
Código que cria os clones.
Código no inimigo para detectar o player próximo.
Tentei colocar todos os inimigos criados em uma Lista para posteriormente conferir qual inimigo colidiu, mas não estou conseguindo selecionar o inimigo certo.
Código que cria os clones.
- Código:
void SpawnEnemys(){
numEnemys = Random.Range(3, 4);
for(int i = 0; i < numEnemys; i++){
Vector2 position = SpawnPos();
int index = Random.Range(0, enemys.Length);
var spawnEnemys = Instantiate(enemys[index], position, enemys[index].transform.rotation);
enemysList.Add(spawnEnemys);
}
}
Código no inimigo para detectar o player próximo.
- Código:
private void Start() {
arrowRotation = GameObject.Find("ArrowToPlayer").GetComponent<ArrowRotation>();
spawnManager = GameObject.Find("SpawnManeger").GetComponent<SpawnManager>();
enemyMoviment = GameObject.Find("EnemyMoviment").GetComponent<EnemyMoviment>();
}
private void OnTriggerEnter2D(Collider2D collision) {
if(collision.gameObject.tag == tagTargetDetection){
detectedObj.Add(collision);
enemyMoviment.VoarPlayer();
arrowRotation.SpriteOn();
detectedObj.Remove(collision[);
}
}
TRONRUSH- Iniciante
- PONTOS : 394
REPUTAÇÃO : 1
Respeito as regras :
Re: Ativar o objeto correto em Clones.
enemyMoviment = GameObject.Find("EnemyMoviment").GetComponent<EnemyMoviment>();
você está usando um objeto para comandar o movimento de todos inimigos do jogo?
não vai funcionar assim;
coloque no script do trigger( que é onde vai em cada inimigo) a void para mover o personagem;
exemplo>
void VoarPlayer()
{
transform.position = // restante do código de movimentação com ESSE transform desse inimigo
}
ai você cria uma void Update, para rodar essa VoarPlayer() caso a bool ViuPlayer ==true;
ViuPlayer fica true quando trigar com um player;
você está usando um objeto para comandar o movimento de todos inimigos do jogo?
não vai funcionar assim;
coloque no script do trigger( que é onde vai em cada inimigo) a void para mover o personagem;
exemplo>
void VoarPlayer()
{
transform.position = // restante do código de movimentação com ESSE transform desse inimigo
}
ai você cria uma void Update, para rodar essa VoarPlayer() caso a bool ViuPlayer ==true;
ViuPlayer fica true quando trigar com um player;
Re: Ativar o objeto correto em Clones.
dessa outra forma que mostrei, cada script com trigger de cada inimigo vai ter a movimentação do SEU TRANSFORM, assim cada inimigo vai seguir o player SE ELE ver o player;
Re: Ativar o objeto correto em Clones.
Consegui solucionar o problema de outra forma, utilizei o transform.parent para poder pegar o script do pai e executar o VoarPlayer() pelo script de detecção.stratengine escreveu:dessa outra forma que mostrei, cada script com trigger de cada inimigo vai ter a movimentação do SEU TRANSFORM, assim cada inimigo vai seguir o player SE ELE ver o player;
Não sei se seria a forma mais correte, mas funcionou para o proposito que eu queria.
Muito obrigado pela ajuda, seu comentário me auxiliou a encontrar uma forma de corrigir o problema.
Como ficou o Script:
- Código:
private void Start() {
enemyMovPai = transform.parent.gameObject;
}
private void OnTriggerEnter2D(Collider2D collision) {
if(collision.gameObject.tag == tagTargetDetection){
detectedObj.Add(collision);
enemyMovPai.GetComponent<EnemyMoviment>().VoarPlayer();
detectedObj.Remove(collision);
}
}
TRONRUSH- Iniciante
- PONTOS : 394
REPUTAÇÃO : 1
Respeito as regras :
![-](https://2img.net/i/empty.gif)
» Ativar luz e objeto sumir
» ativar objeto depois de 3 segundos
» Mudar cena ao ativar um objeto
» Ativar a o componente ligth do objeto colidido
» Como ativar som ao passar por cima de um objeto?
» ativar objeto depois de 3 segundos
» Mudar cena ao ativar um objeto
» Ativar a o componente ligth do objeto colidido
» Como ativar som ao passar por cima de um objeto?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos