Como mudar gameobject instanciado na function start?
4 participantes
Página 1 de 1
Como mudar gameobject instanciado na function start?
queria saber como faço para alterar uma gameobject instanciado na funçao start
eu quero q o script funcione assim
o jogo inicia e um gameobject é gerado aleatoriamente
quando a variavel ATIVAR for true
o objeto instanciado na function start vai mudar
e o numero do objeto nao vai mais existir no random.range
eu quero q o script funcione assim
o jogo inicia e um gameobject é gerado aleatoriamente
quando a variavel ATIVAR for true
o objeto instanciado na function start vai mudar
e o numero do objeto nao vai mais existir no random.range
- Código:
var obj:GameObject;
var CORES : GameObject[];
var NUMERODACOR : int;
static var ATIVAR:boolean=false;
var mn:GameObject;
function Start () {
NUMERODACOR=Random.Range(0, CORES.length);
mn=Instantiate(CORES[NUMERODACOR], transform.position,transform.rotation);
mn.transform.SetParent(obj.transform);
}
function Update () {
if(ATIVAR==true){
NUMERODACOR=Random.Range(0, CORES.length);//<===o numero ja nao pode estar mais aki
//o objeto "CORES[NUMERODACOR] ira mudar aki
}
}
danyllo106- Avançado
- PONTOS : 3522
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Como mudar gameobject instanciado na function start?
Basta adicionar os números já instanciados em uma lista, e depois utilizar while para checar se o número já foi usado...
Só tem um problema... você está usando JavaScript. Por que está usando JavaScript?
Só tem um problema... você está usando JavaScript. Por que está usando JavaScript?
Re: Como mudar gameobject instanciado na function start?
faz pouco tempo que eu comecei a programar
e ainda to aprendendo
acontece que eu comecei a aprender em javascript e nao parei ate ai
axo q esse foi meu erro
eu to esperando vc começar a sua guia de videos para começar a aprender c#
vc pode começar a mi incentivar a começar a aprender c# dizendo como eu utilizo o while
e ainda to aprendendo
acontece que eu comecei a aprender em javascript e nao parei ate ai
axo q esse foi meu erro
eu to esperando vc começar a sua guia de videos para começar a aprender c#
vc pode começar a mi incentivar a começar a aprender c# dizendo como eu utilizo o while
danyllo106- Avançado
- PONTOS : 3522
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Como mudar gameobject instanciado na function start?
o while é um loop (repetição) igual ao for, porem o while é executado enquanto uma condição é true (verdadeira)
Re: Como mudar gameobject instanciado na function start?
ja achei um tutorial do marcos aki
to vendo se eu consigo aplicar ele no que eu qro fazer
https://www.youtube.com/watch?v=w2VqPVOQdBo
to vendo se eu consigo aplicar ele no que eu qro fazer
https://www.youtube.com/watch?v=w2VqPVOQdBo
danyllo106- Avançado
- PONTOS : 3522
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Como mudar gameobject instanciado na function start?
eu ate entendi como se utiliza o while assistindo o video
so q nao entendi como vou fazer pra ele checar se esse numero ja foi usado
uma coisa que eu esqueci de explicar
vai ter um momento em que so tera 1 numero para ser usado
tipo
eu escolho o numero 10
ai
vai usar
o 10
depois o 9
depois o 5
depois o 3
depois o ...
ate ter so o numero 1(ou outro numero aleatorio) para ser usado
so q nao entendi como vou fazer pra ele checar se esse numero ja foi usado
uma coisa que eu esqueci de explicar
vai ter um momento em que so tera 1 numero para ser usado
tipo
eu escolho o numero 10
ai
vai usar
o 10
depois o 9
depois o 5
depois o 3
depois o ...
ate ter so o numero 1(ou outro numero aleatorio) para ser usado
danyllo106- Avançado
- PONTOS : 3522
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Como mudar gameobject instanciado na function start?
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic; // Biblioteca pra usar Lists
public class Aleat : MonoBehaviour {
public GameObject Obj; // Objeto
public GameObject[] _Objetos = new GameObject[10]; // Array de Objetos
public List<int> _N_Utilizados = new List<int>(); // Lista de inteiros
[SerializeField]
private GameObject ObjetoAtual; // Objeto criado atual, visivel no inspector, porém privado.
void Update () {
if (Input.GetKeyDown (KeyCode.H)) CriarObjeto (); // Se apertarmos H iremos fazer o trabalho.
//if (Input.GetKeyDown (KeyCode.J)) ApagarUltimoObjetoCriado ();
}
void CriarObjeto(){
if (ObjetoAtual != null) ApagarUltimoObjetoCriado (); // Se o objeto ja existir o destruiremos e criaremos um novo diferente
int id = Random.Range (0, _Objetos.Length) + 1; // pegando o valor. Precisa adicionar +1 pq vc quer de 1 a 10. E não de 0 a 9.
foreach(int num in _N_Utilizados){ // verificando se existe na lista
if (id == num) CriarObjeto (); // se existir repete o método
}
_N_Utilizados.Add (id); // Se não existir adicionamos o numero na lista.
// codigo para spawnar o objeto com o ID selecionado.
ObjetoAtual = (GameObject) Instantiate(_Objetos[id-1],transform.position,transform.rotation); // spawnamos o objeto
ObjetoAtual.transform.SetParent (Obj.transform); // definimos seu parent
//Debug.Log (id);
}
void ApagarUltimoObjetoCriado(){
Destroy (ObjetoAtual);
ObjetoAtual = null;
}
}
Ou algo assim
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: Como mudar gameobject instanciado na function start?
O momento em que só restar 1 numero vai ser quando _N_Utilizados.Count == 9
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: Como mudar gameobject instanciado na function start?
RenanMSV escreveu:
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic; // Biblioteca pra usar Lists
public class Aleat : MonoBehaviour {
public GameObject Obj; // Objeto
public GameObject[] _Objetos = new GameObject[10]; // Array de Objetos
public List<int> _N_Utilizados = new List<int>(); // Lista de inteiros
[SerializeField]
private GameObject ObjetoAtual; // Objeto criado atual, visivel no inspector, porém privado.
void Update () {
if (Input.GetKeyDown (KeyCode.H)) CriarObjeto (); // Se apertarmos H iremos fazer o trabalho.
//if (Input.GetKeyDown (KeyCode.J)) ApagarUltimoObjetoCriado ();
}
void CriarObjeto(){
if (ObjetoAtual != null) ApagarUltimoObjetoCriado (); // Se o objeto ja existir o destruiremos e criaremos um novo diferente
int id = Random.Range (0, _Objetos.Length) + 1; // pegando o valor. Precisa adicionar +1 pq vc quer de 1 a 10. E não de 0 a 9.
foreach(int num in _N_Utilizados){ // verificando se existe na lista
if (id == num) CriarObjeto (); // se existir repete o método
}
_N_Utilizados.Add (id); // Se não existir adicionamos o numero na lista.
// codigo para spawnar o objeto com o ID selecionado.
ObjetoAtual = (GameObject) Instantiate(_Objetos[id-1],transform.position,transform.rotation); // spawnamos o objeto
ObjetoAtual.transform.SetParent (Obj.transform); // definimos seu parent
//Debug.Log (id);
}
void ApagarUltimoObjetoCriado(){
Destroy (ObjetoAtual);
ObjetoAtual = null;
}
}
Ou algo assim
nao da pra mim testar agora
mas
porque "[id-1]'?
- Código:
ObjetoAtual = (GameObject) Instantiate(_Objetos[id-1],transform.position,transform.rotation); // spawnamos o objeto
danyllo106- Avançado
- PONTOS : 3522
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Como mudar gameobject instanciado na function start?
Aumentamos o indice aqui int id = Random.Range (0, _Objetos.Length) + 1;
Todo index de uma array começa em 0. (0,1,2,3...) . Mas voce quer de 1-10. Entao se for sorteado 0 no random deveremos aumentar 1 pra ficar 1.
Ja na hora de instanciar deveremos tirar 1 pra novamente ficar de 0-9 porque é assim que os indices de arrays são.
Todo index de uma array começa em 0. (0,1,2,3...) . Mas voce quer de 1-10. Entao se for sorteado 0 no random deveremos aumentar 1 pra ficar 1.
Ja na hora de instanciar deveremos tirar 1 pra novamente ficar de 0-9 porque é assim que os indices de arrays são.
RenanMSV- Instrutor
- PONTOS : 4484
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Tópicos semelhantes
» Mudar o SetActive ao clicar em um GameObject.
» [Duvida]Como Clonar Um GameObject
» Como transformar object em Gameobject?
» Como Pegar um GameObject dentro do Getcomponentschild?
» Como ativar e desativar um gameObject com uma tecla
» [Duvida]Como Clonar Um GameObject
» Como transformar object em Gameobject?
» Como Pegar um GameObject dentro do Getcomponentschild?
» Como ativar e desativar um gameObject com uma tecla
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos