Chamar objeto em jogo em um modelo prefab
2 participantes
Página 1 de 1
Chamar objeto em jogo em um modelo prefab
Oi, eu tenho um objeto que já começa em jogo e outro que eu preciso instanciar. Eu quero que, quando eu instanciar o segundo objeto, o primeiro seja vinculado a ele (quero chamar uma variável do primeiro objeto dentro do segundo).
Batataaaa- Iniciante
- PONTOS : 1771
REPUTAÇÃO : 0
Idade : 23
Áreas de atuação : Programação em C#
Respeito as regras :
Re: Chamar objeto em jogo em um modelo prefab
Proxima vez coloque pelomenos seu codigo se não em futuros topicos apenas será ignorado por querer algo em "Mãos", Bom vamos lá você quer que o segundo objeto instaciado fica dentro do pai certo ? se for isso vou da um exemplo
EX:
EX:
- Código:
GameObject nomequalqdoOBJ = Instantiate(nomedoobjPrefab, nomedoobjectSpawn.position, Quaternion.identity);
// OBS Utilize o SetParent pra colocar algum objeto instanciado em outro.
nomequalqdoOBJ.transform.SetParent(nomedoobjectspawn);
Diguinho- MembroAvançado
- PONTOS : 2590
REPUTAÇÃO : 15
Idade : 23
Áreas de atuação : Programação
Respeito as regras :
Re: Chamar objeto em jogo em um modelo prefab
Desculpe, ainda sou novo no fórum e me lembrarei disso nas próximas vezes.
Quanto ao problema eu tentei setar um parentesco com o objeto gerador e ele chamou o primeiro objeto (que é uma malha) perfeitamente mas como o objeto gerador é estático ele não se movia. Por isso na linha seguinte à que o objeto chama a malha eu anulei o parentesco e setei o Rigdbody para dinamico(eu tive que setar pois ele havia herdado isso do objeto pai). Depois continuei o código normalmente sem problemas.
Vou deixar registrado pro caso de alguém ter o mesmo problema.
Código do objeto:
Código do gerador:
Muito obrigado pela ajuda.
Quanto ao problema eu tentei setar um parentesco com o objeto gerador e ele chamou o primeiro objeto (que é uma malha) perfeitamente mas como o objeto gerador é estático ele não se movia. Por isso na linha seguinte à que o objeto chama a malha eu anulei o parentesco e setei o Rigdbody para dinamico(eu tive que setar pois ele havia herdado isso do objeto pai). Depois continuei o código normalmente sem problemas.
Vou deixar registrado pro caso de alguém ter o mesmo problema.
Código do objeto:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
//requer um boxCollider2D
[RequireComponent(typeof(Rigidbody2D))]
public class Move_2 : MonoBehaviour { // funciona apenas com cameras ortograficas
Vector3 posicInicial;
Vector3 posicDestino;
Vector3 vetorDirecao;
Rigidbody2D _rigidbody2D;
public bool Arrastando;
public float[] distancia;
int i, j, l;
public GameObject malha;
public List<GameObject> conexoes = new List<GameObject>();
public bool k;
public float distancia1;
public bool Conectado;
float velocidadeDeMovimento = 10;
float distanciaMinimaConector = 0.5f;
void OnMouseDown(){
posicInicial = transform.root.position - Camera.main.ScreenToWorldPoint (Input.mousePosition);
Arrastando = true;
Conectado = false;
GetComponent<Rigidbody2D> ().constraints = RigidbodyConstraints2D.FreezeRotation;
}
void OnMouseDrag(){
posicDestino = posicInicial + Camera.main.ScreenToWorldPoint (Input.mousePosition);
vetorDirecao = posicDestino - transform.root.position;
_rigidbody2D.velocity = vetorDirecao * velocidadeDeMovimento;
}
void OnMouseUp(){
Arrastando = false;
_rigidbody2D.velocity = Vector2.zero;
}
void FixedUpdate(){
while (k == false) {
malha = GetComponentInParent<SPAWN> ().malha;
transform.parent = null;
_rigidbody2D = transform.root.GetComponent<Rigidbody2D> ();
_rigidbody2D.gravityScale = 0;
_rigidbody2D.bodyType = RigidbodyType2D.Dynamic;
distancia = new float[496];
for (j = 0; j < 496; j++) {
conexoes.Add (malha.GetComponent<MalhaQ>().conexao [j]);
}
k = true;
}
for (i = 0; i < 496; i++) {
distancia[i] = Vector2.Distance (transform.root.position, conexoes[i].transform.position);
}
distancia1 = distancia.Min ();
for (l = 0; l < 496; l++) {
if (distancia [l] == distancia1) {
if (!Arrastando && !Conectado) {
if (distancia1 < distanciaMinimaConector) {
_rigidbody2D.gravityScale = 0;
_rigidbody2D.velocity = Vector2.zero;
transform.root.position = Vector2.MoveTowards (transform.root.position, conexoes [l].transform.position, 0.02f);
}
if (distancia1 < 0.01f) {
Conectado = true;
transform.root.position = conexoes [l].transform.position;
GetComponent<Rigidbody2D> ().constraints = RigidbodyConstraints2D.FreezeAll;
}
}
l = 497;
}
}
}
}
Código do gerador:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SPAWN : MonoBehaviour {
bool press, state, i;
public float timer;
Vector2 position1, position2;
public bool clone;
public Vector3 posicao, rotacao;
public GameObject prefab, malha;
public List<GameObject> contator;
int j;
void Start () {
timer = 0;
j = 0;
}
// Update is called once per frame
void Update () {
i = false;
clone = false;
if (press == true) {
state = true;
timer += Time.deltaTime;
if (i == true) {
state = false;
}
}
if (timer < 0.25 && press == false && state == true) {
while (i == false) {
i = true;
state = false;
clone = true;
}
} else {
if (state == true && press == false) {
state = false;
}
}
if (clone == true) {
contator.Add( Instantiate (prefab, posicao, Quaternion.Euler (rotacao)));
contator [j].transform.parent = gameObject.transform;
j++;
}
}
void OnMouseDown() {
press = true;
}
void OnMouseUp() {
press = false;
StartCoroutine (Delay());
}
IEnumerator Delay () {
yield return new WaitUntil (() => state == false);
timer = 0;
}
}
Muito obrigado pela ajuda.
Batataaaa- Iniciante
- PONTOS : 1771
REPUTAÇÃO : 0
Idade : 23
Áreas de atuação : Programação em C#
Respeito as regras :
Tópicos semelhantes
» Duvida com Nome do Objeto Prefab (Clone)
» como chamar void do objeto em que o RayCast bateu?
» Como não destruir um objeto depois de chamar um cena.
» Como Trocar um Objeto Prefab
» Modelo de player para jogo de sobrevivencia
» como chamar void do objeto em que o RayCast bateu?
» Como não destruir um objeto depois de chamar um cena.
» Como Trocar um Objeto Prefab
» Modelo de player para jogo de sobrevivencia
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos