Duvidas sobre background e destruir game objects
2 participantes
Página 1 de 1
Duvidas sobre background e destruir game objects
Boa tarde
Duvida 1:
Eu tenho um background e queria saber como fazer um scrool, mas só encontro tutorial de scrool infinito e parallax.
A parte azul está representando a atmosfera e a parte em preto é o universo. Enquanto a nave estiver subindo queria que o background fosse descendo no eixo Y, e quando a nave chegasse ao final da imagem (parte preta) o background iria parar de fazer scrool.
A minha nave é quem se move, não o cenário. Ela tem um sistema de propulsão e tal...
Imagem do background:
-------------------
Duvida 2:
Eu fiz o spawn aleatorio dos galões de combustível (sim, aquilo é um galão kkk), a cada 0,5s aparece um novo galão com distancia de 3y e depois de 5 segundos ele é destruído (usei os 5 segundos para destruir os objetos para não ocupar espaço na memoria). Se eu ficar no chão os galões vão aparecendo no eixo Y infinitamente.
Como eu faço para eles serem spawnados apenas a uma distancia de 50y por exemplo do meu personagem, e quando o personagem passar por ele, mesmo que não colete o combustivel ele será destruido quando tiver a uma distancia de 50y por exemplo.
Resumindo: Queria que spawnasse apenas a uma determinada distancia e que fosse destruido depois de uma determinada distancia comparado ao player.
Esse é o código de spawn dos itens:
Imagem do jogo:
Duvida 1:
Eu tenho um background e queria saber como fazer um scrool, mas só encontro tutorial de scrool infinito e parallax.
A parte azul está representando a atmosfera e a parte em preto é o universo. Enquanto a nave estiver subindo queria que o background fosse descendo no eixo Y, e quando a nave chegasse ao final da imagem (parte preta) o background iria parar de fazer scrool.
A minha nave é quem se move, não o cenário. Ela tem um sistema de propulsão e tal...
Imagem do background:
-------------------
Duvida 2:
Eu fiz o spawn aleatorio dos galões de combustível (sim, aquilo é um galão kkk), a cada 0,5s aparece um novo galão com distancia de 3y e depois de 5 segundos ele é destruído (usei os 5 segundos para destruir os objetos para não ocupar espaço na memoria). Se eu ficar no chão os galões vão aparecendo no eixo Y infinitamente.
Como eu faço para eles serem spawnados apenas a uma distancia de 50y por exemplo do meu personagem, e quando o personagem passar por ele, mesmo que não colete o combustivel ele será destruido quando tiver a uma distancia de 50y por exemplo.
Resumindo: Queria que spawnasse apenas a uma determinada distancia e que fosse destruido depois de uma determinada distancia comparado ao player.
Esse é o código de spawn dos itens:
- Código:
using UnityEngine;
using System.Collections;
public class ControllerSpawnFuel : MonoBehaviour {
public GameObject fuelPrefab;
public float rateSpawn;
public float currentTime;
private int posicao;
private float y;
private float x;
private PlayerMovement playerMovement;
public float yPlayer;
// Use this for initialization
void Start () {
currentTime = 0;
y = 3f;
playerMovement = FindObjectOfType(typeof(PlayerMovement)) as PlayerMovement;
}
// Update is called once per frame
void Update () {
currentTime += Time.deltaTime;
yPlayer = playerMovement.transform.position.y;
if (currentTime >= rateSpawn) {
currentTime = 0;
y = y + 3;
x = Random.Range (-3f, 2.4f);
GameObject tempPrefab = Instantiate (fuelPrefab) as GameObject;
tempPrefab.transform.position = new Vector2 (x, y);
Destroy (tempPrefab.gameObject, 5);
if (tempPrefab.transform.position.y < yPlayer) {
// Destroy (tempPrefab.gameObject); <- não funciona
}
}
}
}
Imagem do jogo:
Yuri Alexs- Membro
- PONTOS : 3176
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvidas sobre background e destruir game objects
Cara, para a dúvida 2, basta pegar a posição dos galões no eixo Y e comparar com a posição do player no eixo Y... um simples if parece resolver o caso... Já tentou isto?
Quanto a primeira dúvida, poderia explicar um pouco melhor o que pode ou não ser feito a respeito do background? parece ser um background simples de cores, então ele meio que pode ser espichado, etc... Você poderia criar um sprite e deixa-lo gigante, e apenas impedira a movimentação do jogador caso chegue em uma altura Y maxima...
Quanto a primeira dúvida, poderia explicar um pouco melhor o que pode ou não ser feito a respeito do background? parece ser um background simples de cores, então ele meio que pode ser espichado, etc... Você poderia criar um sprite e deixa-lo gigante, e apenas impedira a movimentação do jogador caso chegue em uma altura Y maxima...
Re: Duvidas sobre background e destruir game objects
MarcosSchultz escreveu:Cara, para a dúvida 2, basta pegar a posição dos galões no eixo Y e comparar com a posição do player no eixo Y... um simples if parece resolver o caso... Já tentou isto?
Quanto a primeira dúvida, poderia explicar um pouco melhor o que pode ou não ser feito a respeito do background? parece ser um background simples de cores, então ele meio que pode ser espichado, etc... Você poderia criar um sprite e deixa-lo gigante, e apenas impedira a movimentação do jogador caso chegue em uma altura Y maxima...
Bom dia Marcos
Duvida 2: Eu fiz isso sim, mas não funcionou:
- Código:
if (tempPrefab.transform.position.y < yPlayer) {
// Destroy (tempPrefab.gameObject); <- não funciona
}
Esse código acima só funciona para o clone que está sendo criado naquele momento.
É que fica sendo criado clones e não sei como acessar esses clones para comparar a posição deles:
Duvida 2:
Espichar o sprite (background) não deixaria o jogo final muito grande? Teria algum problema de desempenho?
Yuri Alexs- Membro
- PONTOS : 3176
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvidas sobre background e destruir game objects
Quanto a esticar o backGround, não tem problema... principalmente por que ele é um sprite apenas de cores, então nem sequer tem um formato a ser mantido... e só ficara grande ou pesado se o tamanho da imagem em si (numero de pixels) for muito grande ou se o objeto em que ela for aplicado possuir muitos polignos... mas como é uma imagem e trata-se de um sprite ou um QUAD, são apenas 2 triangulos o/
Quanto a sua segunda dúvida, eu realmente gostaria de tirar pelo skype, se tiver algum tempo quinta feira, pois envolve <list> e é meio complicado explicar por aqui... Como esse seu projeto parece que já está andando com as próprias pernas, seria interessante tirar essa dúvida pelo skype
Quanto a sua segunda dúvida, eu realmente gostaria de tirar pelo skype, se tiver algum tempo quinta feira, pois envolve <list> e é meio complicado explicar por aqui... Como esse seu projeto parece que já está andando com as próprias pernas, seria interessante tirar essa dúvida pelo skype
Re: Duvidas sobre background e destruir game objects
Eu consegui fazer quase tudo das minhas dúvidas, só falta uma coisa:
Eu consegui fazer o combustível spawnar somente até uma distancia de 20y do Player, entretanto, quando eu continuo subindo com o player o combustivel não continua a spawnar de onde parou, mas sim começa a spawnar bem la em cima, sou seja, quando ele para de spawnar ele ainda continua contando o Y. Queria fazer ele parar de somar o Y.
Eu fiz o seguinte script para parar o spawn:
O background eu fiz como você falou, estiquei ele e ainda coloquei o fundo do cenário preto, resolveu.
Para destruir os combustíveis automaticamente eu fiz o seguinte script e coloquei ele no prefab do combustivel:
Eu consegui fazer o combustível spawnar somente até uma distancia de 20y do Player, entretanto, quando eu continuo subindo com o player o combustivel não continua a spawnar de onde parou, mas sim começa a spawnar bem la em cima, sou seja, quando ele para de spawnar ele ainda continua contando o Y. Queria fazer ele parar de somar o Y.
Eu fiz o seguinte script para parar o spawn:
- Código:
using UnityEngine;
using System.Collections;
public class ControllerSpawnFuel : MonoBehaviour {
public GameObject fuelPrefab;
public float rateSpawn;
public float currentTime;
private int posicao;
private float y;
private float x;
private PlayerMovement playerMovement;
public float yPlayer;
public float tempoDestruir;
public float distanciaEntreSpawn;
public bool pare = false;
// Use this for initialization
void Start () {
currentTime = 0;
y = 3f;
playerMovement = FindObjectOfType(typeof(PlayerMovement)) as PlayerMovement;
}
// Update is called once per frame
void Update () {
currentTime += Time.deltaTime;
yPlayer = playerMovement.transform.position.y;
if (currentTime >= rateSpawn) {
currentTime = 0;
y = y + distanciaEntreSpawn;
x = Random.Range (-3f, 2.4f);
if (y > yPlayer + 20) { // aqui ele para de spawnar
} else {
GameObject tempPrefab = Instantiate (fuelPrefab) as GameObject;
tempPrefab.transform.position = new Vector2 (x, y);
Destroy (tempPrefab.gameObject, tempoDestruir);
}
}
}
}
O background eu fiz como você falou, estiquei ele e ainda coloquei o fundo do cenário preto, resolveu.
Para destruir os combustíveis automaticamente eu fiz o seguinte script e coloquei ele no prefab do combustivel:
- Código:
using UnityEngine;
using System.Collections;
public class FuelController : MonoBehaviour {
private PlayerMovement playerMovement;
public float posicaoPlayer;
public float posicaoX; //apenas pra ver a posição do prefab
public float posicaoY; //apenas pra ver a posição do prefab
public float distanciaDestruir = 0;
private float disTemp;
// Use this for initialization
void Start () {
playerMovement = FindObjectOfType(typeof(PlayerMovement)) as PlayerMovement;
}
// Update is called once per frame
void Update () {
posicaoPlayer = playerMovement.transform.position.y;
posicaoX = transform.position.x;
posicaoY = transform.position.y;
disTemp = posicaoPlayer - distanciaDestruir;
if (posicaoY < disTemp) {
Destroy(gameObject);
}
}
}
Yuri Alexs- Membro
- PONTOS : 3176
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvidas sobre background e destruir game objects
Então, não consegui testar por que está me faltando o script "PlayerMovement"
Mas não entendi a sua dúvida direito, aparentemente está correto assim:
E não teria necessidade dos scripts que vão nos prefabs, por causa disto:
Isto já fará a gasolina ser destruida automaticamente depois to 'tempoDestruir' passar
Mas não entendi a sua dúvida direito, aparentemente está correto assim:
- Código:
using UnityEngine;
using System.Collections;
public class ControllerSpawnFuel : MonoBehaviour {
public GameObject fuelPrefab;
public float rateSpawn;
public float currentTime;
private int posicao;
private float y;
private float x;
private PlayerMovement playerMovement;
public float posicYPlayer;
public float tempoDestruir;
public float distanciaEntreSpawn;
public bool pare = false;
void Start () {
currentTime = 0;
y = 3;
playerMovement = FindObjectOfType(typeof(PlayerMovement)) as PlayerMovement;
}
void Update () {
currentTime += Time.deltaTime;
posicYPlayer = playerMovement.transform.position.y;
if (currentTime >= rateSpawn) {
currentTime = 0;
y += distanciaEntreSpawn;
x = Random.Range (-3f, 2.4f);
if (y <= (posicYPlayer + 20)) {
GameObject tempPrefab = Instantiate (fuelPrefab) as GameObject;
tempPrefab.transform.position = new Vector2 (x, y);
Destroy (tempPrefab.gameObject, tempoDestruir);
}
}
}
}
E não teria necessidade dos scripts que vão nos prefabs, por causa disto:
- Código:
Destroy (tempPrefab.gameObject, tempoDestruir);
Isto já fará a gasolina ser destruida automaticamente depois to 'tempoDestruir' passar
Re: Duvidas sobre background e destruir game objects
Esse tempoDestruir eu vou tirar, vou deixar apenas o script para destruir quando o player passar sem coletar. Se eu deixar o tempoDestruir ele pode destruir os combustiveis que ainda vou pegar.
Eu fiz como o seu script, mas não funcionou.
Eu diminui o rateSpawn e a distancia entre o spawn pra explicar melhor.
Eu esperei chegar no limite de 20y do player para o spawn parar e fiquei parado 3 segundos. Ele parou, mas quando me aproximei ele deveria continuar de onde marquei de vermelho, mas ele continua la da frente.
Eu fiz como o seu script, mas não funcionou.
Eu diminui o rateSpawn e a distancia entre o spawn pra explicar melhor.
Eu esperei chegar no limite de 20y do player para o spawn parar e fiquei parado 3 segundos. Ele parou, mas quando me aproximei ele deveria continuar de onde marquei de vermelho, mas ele continua la da frente.
Yuri Alexs- Membro
- PONTOS : 3176
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvidas sobre background e destruir game objects
Yuri Alexs escreveu:Esse tempoDestruir eu vou tirar, vou deixar apenas o script para destruir quando o player passar sem coletar. Se eu deixar o tempoDestruir ele pode destruir os combustiveis que ainda vou pegar.
Eu fiz como o seu script, mas não funcionou.
Eu diminui o rateSpawn e a distancia entre o spawn pra explicar melhor.
Eu esperei chegar no limite de 20y do player para o spawn parar e fiquei parado 3 segundos. Ele parou, mas quando me aproximei ele deveria continuar de onde marquei de vermelho, mas ele continua la da frente.
isto ocorre por causa daquele valor inicial "3" que você seta no start ( não sei por que ).
Quanto a tirar o "tempoDeDestruir", eu não aconselho. Usar um Destroy com um tempo de 20 seg por exemplo, deixará os objetos mais tempo que o necessário em cena, mas ainda será muito mais leve do que cada prefab carregar um script.
Re: Duvidas sobre background e destruir game objects
Consegui Marcos, mas não era aquele y=3, era um erro de lógica no script kkk
olha ele modificado:
Agora não importa quanto tempo eu demore para subir, ele só vai spawnar quando tiver na distancia certa.
olha ele modificado:
- Código:
[font=Consolas] void Update () {
posicYPlayer = playerMovement.transform.position.y;
if (y <= (posicYPlayer + distanciaSpawnPlayer)) {
currentTime += Time.deltaTime;
if (currentTime >= rateSpawn) {
currentTime = 0;
y += distanciaEntreSpawn;
x = Random.Range (-3f, 2.4f);
GameObject tempPrefab = Instantiate (fuelPrefab) as GameObject;
tempPrefab.transform.position = new Vector2 (x, y);
Destroy (tempPrefab.gameObject, tempoDestruir);
}
}
}[/font]
Agora não importa quanto tempo eu demore para subir, ele só vai spawnar quando tiver na distancia certa.
Yuri Alexs- Membro
- PONTOS : 3176
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Loja no game, duvidas sobre voltar para a cena após usar a loja.
» (UNITY 3D) Mesh Splitter - Como separar uma Mesh em multiplos Game Objects?
» Duvidas Sobre Texturização
» Dúvidas sobre jogo.
» Duvidas sobre monetização
» (UNITY 3D) Mesh Splitter - Como separar uma Mesh em multiplos Game Objects?
» Duvidas Sobre Texturização
» Dúvidas sobre jogo.
» Duvidas sobre monetização
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos