[RESOLVIDO] Como pegar moeda e ela desaparecer?
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Como pegar moeda e ela desaparecer?
Uma duvida que eu to tendo dificuldades para executar é pegar uma moeda e ela sumir quando salvar o game. Eu consigo fácil salvar a quantidade de moedas do player.
Vou dar um exemplo: Existe uma moeda no quarto, eu vou lá, pego ela, ela me da 10 de dinheiro e some. Meu dinheiro agora é 10; Até aqui tudo certo.... Porém, ao recarregar a cena novamente, a moeda ainda está lá e meu dinheiro o continua 10. Como deletar essa moeda do quarto uma vez que foi pega?
minha dúvida é: Como fazer um objeto ou moeda subir ao ser pego pela primeira vez pelo player?
Desde já agradeço. Eu estou usando OnMouseDown pra pegar a moeda;
Vou dar um exemplo: Existe uma moeda no quarto, eu vou lá, pego ela, ela me da 10 de dinheiro e some. Meu dinheiro agora é 10; Até aqui tudo certo.... Porém, ao recarregar a cena novamente, a moeda ainda está lá e meu dinheiro o continua 10. Como deletar essa moeda do quarto uma vez que foi pega?
minha dúvida é: Como fazer um objeto ou moeda subir ao ser pego pela primeira vez pelo player?
Desde já agradeço. Eu estou usando OnMouseDown pra pegar a moeda;
FelixTedesco- Iniciante
- PONTOS : 3379
REPUTAÇÃO : 2
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
Aqui tem um exemplo utilizando o PlayerPrefsX, ele suporta arrays, então posso armazenar um array de bools pra representar quais moedas foram coletadas.
Recomendo de verdade que utilize outro método de salvamento como arquivo binario, esse foi só uma maneira rápida pra te mostrar funcionando.
https://drive.google.com/file/d/1Dh46Vj8uqa4Z6NMBX03Px8MySxsY_Lk2/view?usp=sharing
Recomendo de verdade que utilize outro método de salvamento como arquivo binario, esse foi só uma maneira rápida pra te mostrar funcionando.
https://drive.google.com/file/d/1Dh46Vj8uqa4Z6NMBX03Px8MySxsY_Lk2/view?usp=sharing
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
aaah perfeito! valeu!!!! Isso quebra um grande galho pra mimFagner escreveu:o link está na primeira mensagem, é um package com todos os assets e scripts.
FelixTedesco- Iniciante
- PONTOS : 3379
REPUTAÇÃO : 2
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
Consegui usar o Script! porém, achei um problema que to tendo. As moedas só são alocadas nos arrays se estiverem dentro do objeto gerenciador de moedas ne.. Mas e como eu faço pra colocar uma moeda dentro da gaveta. Eu tenho um script te abrir a gaveta porém, para que a moeda ande junto com a gaveta, ela precisa ser child e se eu faço dela uma child ela não funciona.. como posso resolver isso?
if (numMoedas > 0)
{
moedas = new Moeda[numMoedas];
for (int i = 0; i < numMoedas; i++)
{
Moeda moeda = transform.GetChild(i).GetComponent<Moeda>();
moeda.indiceMoeda = i;
moedas[i] = moeda;
moedas[i].gameObject.name = "Moeda_" + i.ToString("000");
}
}
if (numMoedas > 0)
{
moedas = new Moeda[numMoedas];
for (int i = 0; i < numMoedas; i++)
{
Moeda moeda = transform.GetChild(i).GetComponent<Moeda>();
moeda.indiceMoeda = i;
moedas[i] = moeda;
moedas[i].gameObject.name = "Moeda_" + i.ToString("000");
}
}
FelixTedesco- Iniciante
- PONTOS : 3379
REPUTAÇÃO : 2
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
Acredito que uma solução para isso seria eu conseguir colocar as moedas no array manualmente... como posso fazer essa adaptação no script?
- Código:
using UnityEngine;
public class GerenciadorMoedas : MonoBehaviour
{
public float valorTotal;
public Moeda[] moedas;
public bool[] coletadas;
public bool girarMoedas;
private void Start()
{
coletadas = PlayerPrefsX.GetBoolArray("moedas", false, moedas.Length);
if (PlayerPrefs.HasKey("valortotal"))
{
valorTotal = PlayerPrefs.GetFloat("valortotal");
}
for (int i = 0; i < moedas.Length; i++)
{
moedas[i].gameObject.SetActive(!coletadas[i]);
}
}
public void SalvarInfoMoedas()
{
PlayerPrefsX.SetBoolArray("moedas", coletadas);
}
public void AtualizarInfoMoedas(int indice)
{
coletadas[indice] = true;
moedas[indice].gameObject.SetActive(false);
valorTotal += moedas[indice].valorMoeda;
PlayerPrefsX.SetBoolArray("moedas", coletadas);
PlayerPrefs.SetFloat("valortotal", valorTotal);
}
void CleanSav()
{
PlayerPrefs.DeleteAll();
}
private void Update()
{
//Apenas para testes
// if (Input.GetKeyDown(KeyCode.Space))
// {
// moedas[Random.Range(0, moedas.Length)].Coletar();
// }
if (Input.GetKeyDown(KeyCode.Y))
{
CleanSav();
}
//---------
}
// public void OnMouseDown()
//{
// / moedas[Random.Range(0, moedas.Length)].Coletar();
// }
private void OnValidate()
{
int numMoedas = transform.childCount;
if (numMoedas > 0)
{
moedas = new Moeda[numMoedas];
for (int i = 0; i < numMoedas; i++)
{
Moeda moeda = transform.GetChild(i).GetComponent<Moeda>();
moeda.indiceMoeda = i;
moedas[i] = moeda;
moedas[i].gameObject.name = "Moeda_" + i.ToString("000");
}
}
}
}
FelixTedesco- Iniciante
- PONTOS : 3379
REPUTAÇÃO : 2
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
Segue uma nova versão do Package de exemplo que criei antes, nesse nós procuramos as moedas na Start, então pode deixa-las em qualquer lugar.
https://drive.google.com/file/d/1KmC7ON-rxE73NMmrJROUOoyHqKdq_WRW/view?usp=sharing
https://drive.google.com/file/d/1KmC7ON-rxE73NMmrJROUOoyHqKdq_WRW/view?usp=sharing
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
eu abri o novo script porém, me deparei com outro erro... Eu fiz uma pequena alteração apra que as moedas fossem coletadas usando o OnMouseDown();
Porém, quando dou play, os elementos paresem ficar todos aleatorios
Ex: Quando eu pego a moeda X, é a Y que desaparece...
Era pro elemento 3 ter a Moeda_003
O elemento 4 ter a Moeda_004...
Porém, quando dou play, os elementos paresem ficar todos aleatorios
Ex: Quando eu pego a moeda X, é a Y que desaparece...
Era pro elemento 3 ter a Moeda_003
O elemento 4 ter a Moeda_004...
FelixTedesco- Iniciante
- PONTOS : 3379
REPUTAÇÃO : 2
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
Antes eu percorria os filhos do gerenciador, podia pegar pela ordem e até renomeava na onValidate pra ficar organizado, mas pesquisando por tipo você não tem garantia da unity achar na ordem correta dos nomes, é só questão de organização mesmo, não deve influenciar no resultado pro jogador.
lembrando que você pode comentar a linha que pega as moedas por tipo e preencher a variável manualmente, aí você pode colocar na ordem dos nomes, se quiser.
A questão do onMouseDown já foge do tema, a dúvida original era coletar as moedas fazendo com que as coletadas sumissem caso voltasse pra cena, isso você já tem, nesse caso, posso marcar o tópico como resolvido?
lembrando que você pode comentar a linha que pega as moedas por tipo e preencher a variável manualmente, aí você pode colocar na ordem dos nomes, se quiser.
A questão do onMouseDown já foge do tema, a dúvida original era coletar as moedas fazendo com que as coletadas sumissem caso voltasse pra cena, isso você já tem, nesse caso, posso marcar o tópico como resolvido?
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Como pegar moeda e ela desaparecer?
Acabei de conseguir o que eu queria comentando na linha de pegar moedas. Agora terei que fazer manualmente, mas sem problemas.Fagner escreveu:Antes eu percorria os filhos do gerenciador, podia pegar pela ordem e até renomeava na onValidate pra ficar organizado, mas pesquisando por tipo você não tem garantia da unity achar na ordem correta dos nomes, é só questão de organização mesmo, não deve influenciar no resultado pro jogador.
lembrando que você pode comentar a linha que pega as moedas por tipo e preencher a variável manualmente, aí você pode colocar na ordem dos nomes, se quiser.
A questão do onMouseDown já foge do tema, a dúvida original era coletar as moedas fazendo com que as coletadas sumissem caso voltasse pra cena, isso você já tem, nesse caso, posso marcar o tópico como resolvido?
Tópico resolvido! Muito obrigado o/
FelixTedesco- Iniciante
- PONTOS : 3379
REPUTAÇÃO : 2
Tópicos semelhantes
» [RESOLVIDO]Como fazer uma imagem desaparecer lentamente.
» [RESOLVIDO] Como pegar A posição De um obejeto ?
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» Como criar uma loja e uma moeda virtual no jogo?
» [RESOLVIDO] Pegar armas
» [RESOLVIDO] Como pegar A posição De um obejeto ?
» [RESOLVIDO] Pegar Objetos Filhos e Adicionar em uma Lista ou Array para Usálos como Waypoints
» Como criar uma loja e uma moeda virtual no jogo?
» [RESOLVIDO] Pegar armas
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos