(AJUDA) DESTRUIR OBJETOS INSTANCIADOS
3 participantes
Página 1 de 1
(AJUDA) DESTRUIR OBJETOS INSTANCIADOS
Bom, estou tentando fazer um "tron" em 2d, porém não estou conseguindo terminar a programação do "feixe de luz" que sai de trás do player. Como dar pra ver no script, cada vez que o personagem muda de direção é instanciado um bloco de luz, e usando a função fitColliderBetween eu ligo esses blocos formando uma linha. Porém eu não quero que essa linha permaneça pra sempre (como se vê na imagem), eu quero que ela diminua com o tempo, mas não sei como fazer isso. Se alguém puder ajudar agradeço :D
- Código:
using UnityEngine;
using System.Collections;
public class Move : MonoBehaviour
{
public KeyCode upKey;
public KeyCode downKey;
public KeyCode rightKey;
public KeyCode leftKey;
public float speed = 16;
public GameObject wallPrefab;
Collider2D wall;
Vector2 lastWallEnd;
// Use this for initialization
void Start()
{
GetComponent<Rigidbody2D>().velocity = Vector2.up * speed;
spawnWall();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(upKey))
{
GetComponent<Rigidbody2D>().velocity = Vector2.up * speed;
spawnWall();
}
else if (Input.GetKeyDown(downKey))
{
GetComponent<Rigidbody2D>().velocity = -Vector2.up * speed;
spawnWall();
}
else if (Input.GetKeyDown(rightKey))
{
GetComponent<Rigidbody2D>().velocity = Vector2.right * speed;
spawnWall();
}
else if (Input.GetKeyDown(leftKey))
{
GetComponent<Rigidbody2D>().velocity = -Vector2.right * speed;
spawnWall();
}
fitColliderBetween(wall, lastWallEnd, transform.position);
}
void spawnWall()
{
lastWallEnd = transform.position;
GameObject g = (GameObject)Instantiate(wallPrefab, transform.position, Quaternion.identity);
wall = g.GetComponent<Collider2D>();
}
void fitColliderBetween(Collider2D co, Vector2 a, Vector2 b)
{
co.transform.position = a + (b - a) * 0.5f;
float dist = Vector2.Distance(a, b);
if (a.x != b.x)
co.transform.localScale = new Vector2(dist+1, 1);
else
co.transform.localScale = new Vector2(1, dist+1);
}
void OnTriggerEnter2D(Collider2D co)
{
if (co != wall)
{
print("Player lost:" + name);
Destroy(gameObject);
}
}
}
Felippe4455- Membro
- PONTOS : 3150
REPUTAÇÃO : 2
Respeito as regras :
Re: (AJUDA) DESTRUIR OBJETOS INSTANCIADOS
Adiciona os instanciados em uma array e faz um contador, após um tempo X o ultimo objeto da lista é destroido.
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: (AJUDA) DESTRUIR OBJETOS INSTANCIADOS
Então no começo eu pensei em usar o TrailRenderer, porém não achei uma forma de colocar um colisor nele, para que quando o player passasse nesse feixe de luz ele morresse (como é no tron). Mas se você souber alguma forma de fazer isso usando o TrailRenderer seria de grande ajuda :DMarcosSchultz escreveu:Por que você não usa TrailRenderer?
Felippe4455- Membro
- PONTOS : 3150
REPUTAÇÃO : 2
Respeito as regras :
Re: (AJUDA) DESTRUIR OBJETOS INSTANCIADOS
hmm, infelizmente não tem como por colisor, principalmente pelo fato do Trail ser um billboard e olhar para o Player. ele não é uma mesh fixa, então é impossível alocar qualquer tipo de colisão.
Para resolver o problema, cada objeto intânciado poderia ter consigo um script com apenas uma void Start, e o comando (Destroy,10);
Para resolver o problema, cada objeto intânciado poderia ter consigo um script com apenas uma void Start, e o comando (Destroy,10);
Tópicos semelhantes
» Destruir objetos com Raycast
» Destruir Objetos Filhos
» Criar e destruir objetos secundários
» Destruir todos os objetos em cena.
» (Dúvida) Photon destruir objetos
» Destruir Objetos Filhos
» Criar e destruir objetos secundários
» Destruir todos os objetos em cena.
» (Dúvida) Photon destruir objetos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos