Como controlar posição PREFAB (clones) [ RESOLVIDO ]
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Como controlar posição PREFAB (clones) [ RESOLVIDO ]
Boa noite pessoal, tou a noite toda tentando alguns codigos para fazer o controle de posição de uns Clones instanciados.
A minha dúvida é o segunte, tenho um Script em C# que faz instanciar X numeros de objetos, e no caso se eu uso script de movimento direto no PREFAB principal, ele funciona mas ele move todos objetos na cena (pois todos tem o script clonado).
No caso eu gostaria de saber se tem uma forma de eu criar um script em outro GameObject, que ele possa contar os Clones instanciados e que eu possa por exemplo mover cada um deles separadamente.
Ja tentei ver se por tag criada instanciado funciona mas não consegui.
PS: O nro de instancia será variável, por isso nao posso colocar manualmente as TAG name.
A posição vai variar por isso não posso usar um Objeto VAZIO, para posicionar eles (cada 1 em lugar diferente).
Sou iniciante em algumas partes de funções, talvez seja algo que ainda não conheço de C# que possa resolver..
agradeço e desculpa o textão kkkk
A minha dúvida é o segunte, tenho um Script em C# que faz instanciar X numeros de objetos, e no caso se eu uso script de movimento direto no PREFAB principal, ele funciona mas ele move todos objetos na cena (pois todos tem o script clonado).
No caso eu gostaria de saber se tem uma forma de eu criar um script em outro GameObject, que ele possa contar os Clones instanciados e que eu possa por exemplo mover cada um deles separadamente.
Ja tentei ver se por tag criada instanciado funciona mas não consegui.
PS: O nro de instancia será variável, por isso nao posso colocar manualmente as TAG name.
A posição vai variar por isso não posso usar um Objeto VAZIO, para posicionar eles (cada 1 em lugar diferente).
Sou iniciante em algumas partes de funções, talvez seja algo que ainda não conheço de C# que possa resolver..
agradeço e desculpa o textão kkkk
Última edição por Lord Answer em Dom Set 25, 2016 1:59 pm, editado 1 vez(es) (Motivo da edição : Dúvida resolvida)
Lord Answer- Iniciante
- PONTOS : 2989
REPUTAÇÃO : 0
Respeito as regras :
Re: Como controlar posição PREFAB (clones) [ RESOLVIDO ]
É bem simples, o método Instantiate retorna o Object referente ao que está sendo instanciado. Só ver aqui : https://docs.unity3d.com/ScriptReference/Object.Instantiate.html
Então ao instanciar tu poderá guardar esse Object de retorno em uma variavel. Logo:
Depois tu poderá usar
Agora basta voce fazer um sistema de guardar e depois identificar os objetos que quer mover e quais nao.
Então ao instanciar tu poderá guardar esse Object de retorno em uma variavel. Logo:
- Código:
var objeto = Intantiate(bla,bla,bla);
Depois tu poderá usar
- Código:
objeto.GetComponent<componente>().variavel = sla;
Agora basta voce fazer um sistema de guardar e depois identificar os objetos que quer mover e quais nao.
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: Como controlar posição PREFAB (clones) [ RESOLVIDO ]
Obrigado por responder Renan!
Então, eu ja tentei seguir varios desses exemplos que dizem pra colocar Var na frente do Instantiate mas não esta funcionando no meu,
Ele gera um erro e não aceita.
Abaixo o código que estou usando para teste:
PS: se eu faço o codigo acima sem a parte do (var minhaVar) ele funciona normal e instancia os 10 objetos.
So que sem instancia para controla-los.
Eu precisaria que ele instancia-se os 10 objetos com 10 variaveis (tipo usando um for)
mas ele não pega nem 1 variavel, ai nem tem como tentar adaptar o codigo para um LOOP FOR.
Se você puder testar ai ou me passar algum código para testar melhor aqui eu agradeço!
Obrigado!
Então, eu ja tentei seguir varios desses exemplos que dizem pra colocar Var na frente do Instantiate mas não esta funcionando no meu,
Ele gera um erro e não aceita.
Abaixo o código que estou usando para teste:
- Código:
using UnityEngine;
public class teste : MonoBehaviour
{
public GameObject prefaber;
void Start()
{
for (int i = 0; i < 10; i++)
var minhaVar = Instantiate(prefaber, new Vector3(i * 2.0f, 0, 0), Quaternion.identity);
}
}
PS: se eu faço o codigo acima sem a parte do (var minhaVar) ele funciona normal e instancia os 10 objetos.
So que sem instancia para controla-los.
Eu precisaria que ele instancia-se os 10 objetos com 10 variaveis (tipo usando um for)
mas ele não pega nem 1 variavel, ai nem tem como tentar adaptar o codigo para um LOOP FOR.
Se você puder testar ai ou me passar algum código para testar melhor aqui eu agradeço!
Obrigado!
Lord Answer- Iniciante
- PONTOS : 2989
REPUTAÇÃO : 0
Respeito as regras :
Re: Como controlar posição PREFAB (clones) [ RESOLVIDO ]
Variaveis declaradas dentro de blocos são destruidas ao fim do mesmo. Logo essa minhavar será destruida ao fim do for e voce perderá qualquer referencia a ela.
Pronto, agora todos objetos instanciados serão guardados na array e vc poderá acessa-los usando ListaDePrefabs[0-9].
- Código:
using UnityEngine;
public class QualquerScript : MonoBehaviour {
public GameObject[] ListaDePrefabs = new GameObject[10]; // Criando uma array com 10 espaços.
public GameObject Prefab; // Objeto que deverá ser instanciado
void Start () {
for (int i = 0; i < 10; i++) {
ListaDePrefabs[i] = Instantiate(Prefab, new Vector3(i * 2.0f, 0, 0), Quaternion.identity) as GameObject;
}
}
}
Pronto, agora todos objetos instanciados serão guardados na array e vc poderá acessa-los usando ListaDePrefabs[0-9].
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: Como controlar posição PREFAB (clones) [ RESOLVIDO ]
Muito Obrigado amigo!
RESOLVEU A DÚVIDA PRINCIPAL!
Mas tentei aqui deixar a lista de quantidade do array em Aberto, e não consegui..
você sabe se tem como eu deixar meio (infinito?) sem definir quantos ARRAY quero criar ?
NESSA LINHA, no caso se eu quiser Infinitos Array e não limitar eles...
(se não serei obrigado a criar sempre uma variavel de quantidade antes)
public GameObject[] ListaDePrefabs = new GameObject[10]; // Criando uma array com 10 espaços.
abraço!
E Obrigado por enquanto!
RESOLVEU A DÚVIDA PRINCIPAL!
Mas tentei aqui deixar a lista de quantidade do array em Aberto, e não consegui..
você sabe se tem como eu deixar meio (infinito?) sem definir quantos ARRAY quero criar ?
NESSA LINHA, no caso se eu quiser Infinitos Array e não limitar eles...
(se não serei obrigado a criar sempre uma variavel de quantidade antes)
public GameObject[] ListaDePrefabs = new GameObject[10]; // Criando uma array com 10 espaços.
abraço!
E Obrigado por enquanto!
Lord Answer- Iniciante
- PONTOS : 2989
REPUTAÇÃO : 0
Respeito as regras :
Re: Como controlar posição PREFAB (clones) [ RESOLVIDO ]
Cara, se você criar um array infinito, o pc desliga por sobrecarga. O que exatamente você está tentando fazer?
George Lucas Vieira- Avançado
- PONTOS : 3391
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: Como controlar posição PREFAB (clones) [ RESOLVIDO ]
George Lucas Vieira escreveu:Cara, se você criar um array infinito, o pc desliga por sobrecarga. O que exatamente você está tentando fazer?
Verdade amigo, ele ia fazer o processador ficar gerando loop infinito e travaria pq não ia ter o final.
Eu vi que meu raciocínio estava errado antes (eu descobri que tenho que criar um contador antes, e depois colocar o resultado do contador no valor maximo do array).
No caso o código eu tava adaptando para simular conexões online (como nao sabia quantos jogadores iriam entrar por isso pensei que seria sem
limitadador)
Mas ai criei o contador que da uma lida antena na lista de players (cadastro).
FICOU RESOLVIDO, abraços!
Lord Answer- Iniciante
- PONTOS : 2989
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Como salvar a posição do FPS Controller da Unity
» [RESOLVIDO] Como fazer para controlar o áudio em diferentes cenas?
» [RESOLVIDO] Como exportar o modelo sem o seguinte prefab:
» [RESOLVIDO] Como pegar A posição De um obejeto ?
» [RESOLVIDO] como eu adiciono um limite para a Posição Y?
» [RESOLVIDO] Como fazer para controlar o áudio em diferentes cenas?
» [RESOLVIDO] Como exportar o modelo sem o seguinte prefab:
» [RESOLVIDO] Como pegar A posição De um obejeto ?
» [RESOLVIDO] como eu adiciono um limite para a Posição Y?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos