[RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
+2
Goustkor
RenanMSV
6 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Fala guris,
To fazendo um joguinho casual, ai quero que quando o meu personagem pegue um ponto a fonte que conta os pontos de uma aumentada de tamanho e volte como era antes...esse "efeito" tem em bastante jogos e mostra melhor quando o player pega os pontos.
To usando esse script pra fazer os pontos. E quando pontuo chamo a variável pontos em outro script e adc um ++.
To fazendo um joguinho casual, ai quero que quando o meu personagem pegue um ponto a fonte que conta os pontos de uma aumentada de tamanho e volte como era antes...esse "efeito" tem em bastante jogos e mostra melhor quando o player pega os pontos.
To usando esse script pra fazer os pontos. E quando pontuo chamo a variável pontos em outro script e adc um ++.
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class HiScore : MonoBehaviour {
public static float pontos;
public static float maxPontos;
public Text pontosText;
// public Text pontosTextShadow;
public Text maxPontosText;
// Use this for initialization
void Start () {
maxPontos = PlayerPrefs.GetFloat("maxPontos");
pontos = 0;
}
// Update is called once per frame
void Update () {
//pontos += Time.deltaTime;
if (pontos > maxPontos) {
maxPontos = pontos;
PlayerPrefs.SetFloat("maxPontos", maxPontos);
}
pontosText.text = "" + Mathf.Round(pontos);
//pontosTextShadow.text = "" + Mathf.Round(pontos);
maxPontosText.text = "Melhor: " + Mathf.Round (maxPontos);
}
}
Última edição por Hardencio em Ter Set 20, 2016 2:07 pm, editado 1 vez(es)
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Usa animação. Crie uma animação com o texto aumentando o tamanho e voltano pra sua posicao normal. Depois crie uma boolena que faça com que a animação "toque", configure ela para voltar pro estado vazio ao fim e pronto.
https://docs.unity3d.com/ScriptReference/Animator.SetBool.html
https://docs.unity3d.com/ScriptReference/Animator.SetBool.html
RenanMSV- Instrutor
- PONTOS : 4483
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Opa Renan, obrigado pela ideia..tinha esquecido que daria pra fazer com animação.
Eu fiz aqui porem quando eu pego meu ponto eu deixo a bool true pra executar a animação certo? Ai que vem o problema... Ela só fica true e fica executando sem parar.
Eu preciso setar ela pra false de novo, sabe como fazer isso? Preciso que quando eu pego o ponto eu deixo ela true e logo volte pra false.
Abraço!
Eu fiz aqui porem quando eu pego meu ponto eu deixo a bool true pra executar a animação certo? Ai que vem o problema... Ela só fica true e fica executando sem parar.
Eu preciso setar ela pra false de novo, sabe como fazer isso? Preciso que quando eu pego o ponto eu deixo ela true e logo volte pra false.
Abraço!
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
2 motivos, você retirou o loop da animação? Você criou 2 pontos no animator, 1 de texto normal e um expandido, com duas transação uma com true para aumentar o texto e uma como false para voltar ao padrao?Hardencio escreveu:Opa Renan, obrigado pela ideia..tinha esquecido que daria pra fazer com animação.
Eu fiz aqui porem quando eu pego meu ponto eu deixo a bool true pra executar a animação certo? Ai que vem o problema... Ela só fica true e fica executando sem parar.
Eu preciso setar ela pra false de novo, sabe como fazer isso? Preciso que quando eu pego o ponto eu deixo ela true e logo volte pra false.
Abraço!
Goustkor- Avançado
- PONTOS : 3073
REPUTAÇÃO : 18
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Retirei o loop sim.
Oq eu fiz foi:criei um ponto sem nenhuma animação, que quando entra vai pra ele, e criei o outro ponto que é a animação da fonte aumentando. Na transição dessa sem animação para a animação da fonte eu add ela em true. E a volta eu fiz uma transição da com a animação para a sem nada...Porem o loop acontece ai..Quando a bool fica true ele executa a animação logo volta para a normal..mas como ta true ela executa de novo e assim vai...
Oq eu fiz foi:criei um ponto sem nenhuma animação, que quando entra vai pra ele, e criei o outro ponto que é a animação da fonte aumentando. Na transição dessa sem animação para a animação da fonte eu add ela em true. E a volta eu fiz uma transição da com a animação para a sem nada...Porem o loop acontece ai..Quando a bool fica true ele executa a animação logo volta para a normal..mas como ta true ela executa de novo e assim vai...
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Tente isto:
Basta chamar a void "Alterar tamanho" deste script, naquele outro que você chama os "pontos++"
tipo, junto com os "pontos++" você chama a void "Alterar Tamanho" deste script.
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class HiScore : MonoBehaviour {
public static float pontos;
public static float maxPontos;
public Text pontosText;
public Text maxPontosText;
int tamanhoFonteOriginal;
bool alterar = false, voltar = false;
float fontSize;
void Start () {
tamanhoFonteOriginal = pontosText.fontSize;
maxPontos = PlayerPrefs.GetFloat("maxPontos");
pontos = 0;
}
void Update () {
if (pontos > maxPontos) {
maxPontos = pontos;
PlayerPrefs.SetFloat("maxPontos", maxPontos);
}
if (Input.GetKeyDown (KeyCode.E)) {
AlterarTamanho ();
}
pontosText.text = "" + Mathf.Round(pontos);
maxPontosText.text = "Melhor: " + Mathf.Round (maxPontos);
if (alterar == true) {
fontSize = Mathf.Lerp (fontSize, tamanhoFonteOriginal * 1.5f, Time.deltaTime*5.0f);
pontosText.fontSize = (int) fontSize;
if (pontosText.fontSize >= tamanhoFonteOriginal * 1.3f) {
alterar = false;
voltar = true;
}
}
if (voltar == true) {
fontSize = Mathf.Lerp (fontSize, tamanhoFonteOriginal*0.975f, Time.deltaTime*5.0f);
pontosText.fontSize = (int) fontSize;
if (pontosText.fontSize <= tamanhoFonteOriginal) {
alterar = false;
}
}
}
void AlterarTamanho(){
alterar = true;
voltar = false;
fontSize = pontosText.fontSize;
}
}
Basta chamar a void "Alterar tamanho" deste script, naquele outro que você chama os "pontos++"
tipo, junto com os "pontos++" você chama a void "Alterar Tamanho" deste script.
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Opa, obrigado pela ajuda...vou testar
Mas não sei como chamar uma void em outro script..Só sei chamar variáveis
Mas não sei como chamar uma void em outro script..Só sei chamar variáveis
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
e da mesma forma
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Ué, eu devo estar fazendo algo errado...
Tentei chamar como esta ali no script, ela estando.
E deu esse erro: error CS0120: An object reference is required to access non-static member `HiScore.AlterarTamanho()'
Deixei a void publica assim:
E deu o mesmo erro.
Aí deixei ela public static void ou só static void:
E dá esse tipo de erro aqui: An object reference is required to access non-static member `HiScore.pontosText'
Aí eu deixei as variáveis que mostrava nos erros todas em static...porem não tem como deixar a do tipo text em static pq acontece esse erro aqui: Object reference not set to an instance of an object
HiScore.Update () (at Assets/Scripts/HiScore.cs:29)
Deduzo que seja pq quando transforma ela em static ela não aparece mais no instpector então não tem como setar o text lá...
E agora??
Tentei chamar como esta ali no script, ela estando.
- Código:
void AlterarTamanho(){
alterar = true;
voltar = false;
fontSize = pontosText.fontSize;
}
E deu esse erro: error CS0120: An object reference is required to access non-static member `HiScore.AlterarTamanho()'
Deixei a void publica assim:
- Código:
public void AlterarTamanho(){
alterar = true;
voltar = false;
fontSize = pontosText.fontSize;
}
E deu o mesmo erro.
Aí deixei ela public static void ou só static void:
- Código:
public static void AlterarTamanho(){
alterar = true;
voltar = false;
fontSize = pontosText.fontSize;
}
E dá esse tipo de erro aqui: An object reference is required to access non-static member `HiScore.pontosText'
Aí eu deixei as variáveis que mostrava nos erros todas em static...porem não tem como deixar a do tipo text em static pq acontece esse erro aqui: Object reference not set to an instance of an object
HiScore.Update () (at Assets/Scripts/HiScore.cs:29)
Deduzo que seja pq quando transforma ela em static ela não aparece mais no instpector então não tem como setar o text lá...
E agora??
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Amigo em casos assim creio que seja uma boa usar singleton(se voce tiver no maximo apenas uma instancia da classe em cada cena)
Adicione esse codigo no seu script HiScore:
E desta forma voce pode acessar o script, seus metodos, variaveis ...
Atravez de por exemplo:
Onde NomeDaSuaVariavel é o nome da variavel que voce quer usar/alterar ...
Adicione esse codigo no seu script HiScore:
- Código:
public class HiScore : MonoBehaviour {
public static HiScore singleton;
void Awake(){
singleton = this;
}
}
E desta forma voce pode acessar o script, seus metodos, variaveis ...
Atravez de por exemplo:
- Código:
HiScore.singleton.AlterarTamanho();
- Código:
HiScore.singleton.NomeDaSuaVariavel
Onde NomeDaSuaVariavel é o nome da variavel que voce quer usar/alterar ...
Re: [RESOLVIDO] Quando pegar pontos a fonte aumentar de tamanho?
Na verdade consegui agora de outra forma...
Criei outra variável static text e na void Start fiz ela receber o outro text.
Ai só precisei mudar nos ifs em vez de pontosText para pontosStatic.
Agora ta funcionando perfeitamente!! Deu um efeito bem legal no jogo!!
Obrigado a todos.
Criei outra variável static text e na void Start fiz ela receber o outro text.
- Código:
public Text pontosText;
static Text pontosStatic;
void Start () {
pontosStatic = pontosText;
}
Ai só precisei mudar nos ifs em vez de pontosText para pontosStatic.
Agora ta funcionando perfeitamente!! Deu um efeito bem legal no jogo!!
Obrigado a todos.
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Tópicos semelhantes
» como aumentar o tamanho da fonte? (em script) GUI.Label
» [RESOLVIDO] Aumentar um valor quando próximo do HitPoint
» [RESOLVIDO] aumentar a dificuldade
» [RESOLVIDO] Aumentar uma "textbox" no Inspector
» [RESOLVIDO] Aumentar resolução de uma sprite no Unity
» [RESOLVIDO] Aumentar um valor quando próximo do HitPoint
» [RESOLVIDO] aumentar a dificuldade
» [RESOLVIDO] Aumentar uma "textbox" no Inspector
» [RESOLVIDO] Aumentar resolução de uma sprite no Unity
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos