SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida Very Happy
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Consigo Fazer um Lerp De Uma Int ? Subir do Valor Inicial até o Valor Especifico devegar ?
Receber e setar texto em um objeto
Novo jogo em desenvolvimento para android
Ajuda para como fazer esse script voltar a funcionar
MULTIPLAYER Unet: Como sincronizar Variaveis(bool)
Atualização do meu jogo estilo Resident Evil 4 + link do APK
[TUTORIAL] UNITY 5 - Efeito submerso (underwater effect), distorção da água e gotas na tela
[RESOLVIDO] Button perdendo a instancia
[RESOLVIDO] O fórum é só para Unity?
Reproduzir vídeos do youtube
Banco de Dados Cotação
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
UNITY NAO REPRODUZ AUDIO, problema do pc ou da unity?
Necessito de sua ajuda para uma ideia...
(ARQUIVO) Leia aqui como obter sucesso com seu jogo independente?
Como usar o Getfloat no audio mixer?
Duvida com script !
Criar LAN via bluetooth
[DUVIDA] Sistema de diario/Livro de notas
Atributos Network UNET
[RESOLVIDO]Estou Usando FindGameObjectWithTag Porem....
[Tutorial] Mover/Empurrar Objetos, Caixote,etc
Script de Movimentação não funciona
[RESOLVIDO] SDK NÃO FUNCIONA NO WINDOWS 10
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
Novo jogo - Stackx
Movimentação no Espaço como Jet Pack
[Duvida] Collab Excedeu o Seu Limite : Como posso transferir o projeto entre a equipe?
Simular tecla com um botao ou touch
Weslley GameDev
Aguem tem alguma dica sobre NavMeshAgent
Botoes da unity no android e destruir um objeto em qualquer lugar da cena com touch
Dúvida Netwoking
[____ADERIR A UMA CATEGORIA NO FÓRUM____]
é Possivel visualizar uma Variavel Estatica no Inspector ?
Ajuda Com Admob
é Possivel Fazer uma FindTag usando um Text ao inves do GameObject ?
[RESOLVIDO] Animação com "Objetos"
[RESOLVIDO] Enemy IA e Portas
Formação de equipes - AK Vida Real
Como melhorar o desempenho mobile?
Erro com monodevelop
física de carro
[ERRO UNITY] Unity 2017
Erro com lista
Physics2D para Physics?
Tutorial tempo em jogo
Duvida Blender
Programador Rodando o Sul
Novo tema fórum - Votação
Como fazer uma loja em multiplayer?
Resolução do jogo mobile
Equipe Para Desenvolver Games Comigo
aVork - Física realista para veículos
Como fazer uma IA sem Navmesh
NÃO CONSIGO ARRASTAR NADA DA ABA PROJECT PARA A ABA HIERARCHY OU SCENE '-'
[TUTORIAL] Mover, Girar e lançar objetos com o mouse ( estilo Amnesia )
Qual a diferença entre SmoothDamp e Lerp?
[TUTORIAL] Mover, girar e lançar objetos com o MOUSE (Unity 2017, atualizado)
Limitar velocidade no transform ou rigidbody?
Monodevelop
[Dúvida] ~~> É permitido colocar nomes reais de cidades em games?
Lerp não funciona direito com valores grandes
Como Posso Fazer um Time.DeltaTime com uma Int ?
Wheel joint 2d e problema com limite de velocidade
[Duvida] Duvida Com script de mover em direção ao mouse.
Lights bugadas!!
- COMO CRIO UM CRONOMETRO COM O TEMPO DA VIDA REAL? -
Fazer com que a array classifique por distancia
Auto-Complete do Visual Studios
Ajuda com Rigidbody eixo Y mover constante
Background invisivel
Script Objeto Rotate
Jogo Android desenvolvido
Aprendendo a usar o scuptmode
Novo jogo sendo desenvolvido por mim! ( Simulador vida Real )
Equipe para desenvolver o ENDLESS WAR( FPS MULTIPLAYER)
phaton ou unity net work
Como fazer um sistema multiplayer?
[Servidores Experimentais] No Exit - Beta Aberto
Sistema de física e atrito para carro 2d
Problemas com Pitch
Preencher formulario php apartir do Unity
[PROJETO] Last - Trip | Jogo De Sobrevivencia
Ajuda com a IA do meu inimigo
Erro da Unity
[Duvida] Movimentação usando Character Controller
Casa do meu projeto
ERRO EM BUILD PARA ANDROID?
Duvida sobre animação e skill sair sincronizados
ARPG & GoodMotion Update - Sistema para jogos MMORPG e Hack and Slash.
Equipe de desenvolvimento
Utilidade Pública
não sei o que tem de errado com esse script
[RESOLVIDO] Barreira Invisivel
Dúvida no UNET Connect
MultiPlayer Local Android!
Como exibir uma mensagem pop up no android?
Hoje à(s) 11:54 pm
Hoje à(s) 11:41 pm
Hoje à(s) 10:39 pm
Hoje à(s) 10:33 pm
Hoje à(s) 8:56 pm
Hoje à(s) 8:35 pm
Hoje à(s) 6:53 pm
Hoje à(s) 6:48 pm
Hoje à(s) 6:44 pm
Hoje à(s) 6:41 pm
Hoje à(s) 6:29 pm
Hoje à(s) 6:25 pm
Hoje à(s) 5:44 pm
Hoje à(s) 4:25 pm
Hoje à(s) 4:08 pm
Hoje à(s) 3:58 pm
Hoje à(s) 3:30 pm
Hoje à(s) 3:03 pm
Hoje à(s) 2:11 pm
Hoje à(s) 2:08 pm
Hoje à(s) 1:00 pm
Hoje à(s) 1:00 pm
Hoje à(s) 12:22 pm
Hoje à(s) 11:31 am
Hoje à(s) 11:18 am
Hoje à(s) 11:18 am
Hoje à(s) 10:40 am
Hoje à(s) 10:37 am
Hoje à(s) 9:38 am
Hoje à(s) 8:46 am
Hoje à(s) 12:41 am
Ontem à(s) 11:41 pm
Ontem à(s) 11:17 pm
Ontem à(s) 11:04 pm
Ontem à(s) 10:45 pm
Ontem à(s) 10:38 pm
Ontem à(s) 9:31 pm
Ontem à(s) 8:50 pm
Ontem à(s) 8:16 pm
Ontem à(s) 8:08 pm
Ontem à(s) 8:07 pm
Ontem à(s) 5:09 pm
Ontem à(s) 4:43 pm
Ontem à(s) 4:38 pm
Ontem à(s) 4:30 pm
Ontem à(s) 3:25 pm
Ontem à(s) 1:28 pm
Ontem à(s) 1:19 pm
Ontem à(s) 12:00 pm
Ontem à(s) 11:00 am
Ontem à(s) 10:29 am
Ontem à(s) 8:30 am
Seg Jan 15, 2018 11:55 pm
Seg Jan 15, 2018 10:34 pm
Seg Jan 15, 2018 8:54 pm
Seg Jan 15, 2018 8:11 pm
Seg Jan 15, 2018 6:55 pm
Seg Jan 15, 2018 6:53 pm
Seg Jan 15, 2018 6:48 pm
Seg Jan 15, 2018 6:36 pm
Seg Jan 15, 2018 5:40 pm
Seg Jan 15, 2018 5:35 pm
Seg Jan 15, 2018 5:12 pm
Seg Jan 15, 2018 5:05 pm
Seg Jan 15, 2018 4:46 pm
Seg Jan 15, 2018 4:17 pm
Seg Jan 15, 2018 3:55 pm
Seg Jan 15, 2018 3:45 pm
Seg Jan 15, 2018 3:34 pm
Seg Jan 15, 2018 3:17 pm
Seg Jan 15, 2018 3:04 pm
Seg Jan 15, 2018 2:35 pm
Seg Jan 15, 2018 2:31 pm
Seg Jan 15, 2018 2:03 pm
Seg Jan 15, 2018 12:51 pm
Seg Jan 15, 2018 12:48 pm
Seg Jan 15, 2018 12:28 pm
Dom Jan 14, 2018 10:48 pm
Dom Jan 14, 2018 9:30 pm
Dom Jan 14, 2018 8:54 pm
Dom Jan 14, 2018 8:35 pm
Dom Jan 14, 2018 6:26 pm
Dom Jan 14, 2018 4:07 pm
Dom Jan 14, 2018 2:24 pm
Dom Jan 14, 2018 1:28 pm
Dom Jan 14, 2018 12:26 pm
Dom Jan 14, 2018 11:54 am
Dom Jan 14, 2018 10:23 am
Dom Jan 14, 2018 7:54 am
Dom Jan 14, 2018 2:38 am
Dom Jan 14, 2018 1:42 am
Dom Jan 14, 2018 12:00 am
Sab Jan 13, 2018 11:42 pm
Sab Jan 13, 2018 11:40 pm
Sab Jan 13, 2018 5:50 pm
Sab Jan 13, 2018 3:53 pm
Sab Jan 13, 2018 3:11 pm
Sab Jan 13, 2018 3:08 pm
Sab Jan 13, 2018 1:54 pm
fabriciorsz34
felipehobs1
fabriciorsz34
fabriciorsz34
Extreme Craft
thiagotmi
Pixelizad
postch
recagonlei
natanael.olimpio
natanael.olimpio
natanael.olimpio
Extreme Craft
cody0033
cody0033
916anderson
jasondavin
Água Sem Hidrogênio
Gwiisk
jasondavin
recagonlei
dstaroski
Água Sem Hidrogênio
recagonlei
dstaroski
dstaroski
googolepton
Lagoeiro
glauco
Phph09
Água Sem Hidrogênio
luizmauro123
fabriciorsz34
recagonlei
recagonlei
recagonlei
Água Sem Hidrogênio
rafaelllsd
recagonlei
recagonlei
fabriciorsz34
dstaroski
Zack2
Zack2
PatifeCraft
luizmauro123
Callyde Jr
Callyde Jr
Zack2
heliab125
M4theuz
Phph09
João Marcos S. R.
cody0033
recagonlei
Callyde Jr
MarcosSchultz
MarcosSchultz
recagonlei
MarcosSchultz
Phph09
Phph09
ÁguaMineral
Daniel Pires da Silva
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
MarcosSchultz
Callyde Jr
RonilddoRR
RW.
ÁguaMineral
pitercredd
recagonlei
rafaelllsd
Álefe Kauvyhtz
Álefe Kauvyhtz
recagonlei
Jmspp
BRGC
Gwiisk
recagonlei
pitercredd
Zack2
Água Sem Hidrogênio
luizmauro123
recagonlei
RonilddoRR
recagonlei
misael pinheiro
EricKBMS
recagonlei
recagonlei
Água Sem Hidrogênio

Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

DÚVIDA Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por mauriciobrancalion em Qui Ago 11, 2016 10:02 am

Olá Estou iniciando no Unity3D para jogos 2D a partir de um Starter Kit. Neste Kit que é de um jogo tipo infinite runner tem programado para ganhar  pontos conforme avança no percurso e quando coleta moedas (Coins) mas preciso escrever um script que permita ao coletar X moedas ou ao alcançar X pontos a quantidade de Vida inicial (no caso 3) se restabeleça ou aumente para uma ou duas vidas a mais.

algumas coisas que já sei:
o jogo não tem uma plataforma todo cenários inimigo e itens coletáveis são gerados randomicamente 
sei que o icone das vidas é um item fixo na tela do jogo e que esta indicado no script do Game Manager o total de vidas
existe um script chamado coin que pode ser aplicado aos itens randomicos e define a quantidade de pontos ganhos 

desculpe se me explicação é muito raza mas se poderem me ajudar agradeço muito, é para um jogo institucional sem fins lucrativos para auxilio em tratamento infantil.

mauriciobrancalion
Iniciante
Iniciante

PONTOS : 551
REPUTAÇÃO : 2
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por RenanMSV em Qui Ago 11, 2016 10:45 am

poste o script que existe de ganhar pontos
avatar
RenanMSV
Instrutor

Masculino PONTOS : 1979
REPUTAÇÃO : 328
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por mauriciobrancalion em Qui Ago 11, 2016 10:48 am

using UnityEngine;
using System.Collections;

namespace MoreMountains.InfiniteRunnerEngine
{    
    /// <summary>
    /// Add this class to an object and it'll add points when collected.
    /// Note that you'll need a trigger boxcollider on it
    /// </summary>
    public class Coin : PickableObject
    {
        /// The amount of points to add when collected
        public int PointsToAdd = 10;




        protected override void ObjectPicked()
        {        
            // We pass the specified amount of points to the game manager
            GameManager.Instance.AddPoints(PointsToAdd);

        }
        
    }
}

mauriciobrancalion
Iniciante
Iniciante

PONTOS : 551
REPUTAÇÃO : 2
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por Manawydan em Qui Ago 11, 2016 11:35 am

provavelmente o script GameManager deve ter uma variavel que guarda a pontuação, entao apenas verifique esse valor e faça restaurar vida.
avatar
Manawydan
Moderador

PONTOS : 1127
REPUTAÇÃO : 178
Idade : 21
Respeito as regras :

Ver perfil do usuário https://wad.ojooo.com/register.php?ref=ManawydanBr

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por mauriciobrancalion em Qui Ago 11, 2016 11:49 am

Desculpe a ignorância o script GameManeger esta aqui, qual variavel guarda a pontuação e onde eu escrevo a condição de restauração, no script do Gamemanager ou no script da pontuação?

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

namespace MoreMountains.InfiniteRunnerEngine
{    
    /// <summary>
    /// The game manager is a persistent singleton that handles points and time
    /// </summary>
    public class GameManager : MonoBehaviour
    {            
        /// the number of lives the player gets (you lose a life when your character (or your characters all) die.
        /// lose all lives you lose the game and your points.
        public int TotalLives = 3;
        /// The current number of lives
        public int CurrentLives { get; protected set;  }
        /// the current number of game points
        public float Points { get; protected set; }
        /// the current time scale
        public float TimeScale;
        /// the various states the game can be in
        public enum GameStatus { BeforeGameStart, GameInProgress, Paused, GameOver, LifeLost };
        /// the current status of the game
        public GameStatus Status{ get; protected set; }

        public delegate void GameManagerInspectorRedraw();
        // Declare the event to which editor code will hook itself.
        public event GameManagerInspectorRedraw GameManagerInspectorNeedRedraw;

        // storage
        protected float _savedTimeScale;
        protected IEnumerator _scoreCoroutine;
        protected float _pointsPerSecond;
        protected GameStatus _statusBeforePause;
        
        // singleton pattern
        static public GameManager Instance { get { return _instance; } }
        static protected GameManager _instance;
        public void Awake()
        {
            _instance = this;        
        }

        /// <summary>
        /// Initialization
        /// </summary>
        protected virtual void Start()
        {
            CurrentLives = TotalLives;
            _savedTimeScale = TimeScale;
            Time.timeScale = TimeScale;
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.Initialize();
            }
        }

        public virtual void SetPointsPerSecond(float newPointsPerSecond)
        {
            _pointsPerSecond = newPointsPerSecond;
        }
        
        /// <summary>
        /// Sets the status. Status can be accessed by other classes to check if the game is paused, starting, etc
        /// </summary>
        /// <param name="newStatus">New status.</param>
        public virtual void SetStatus(GameStatus newStatus)
        {
            Status=newStatus;
            if (GameManagerInspectorNeedRedraw != null) { GameManagerInspectorNeedRedraw(); }
        }
                
        /// <summary>
        /// this method resets the whole game manager
        /// </summary>
        public virtual void Reset()
        {
            Points = 0;
            TimeScale = 1f;
            GameManager.Instance.SetStatus(GameStatus.GameInProgress);
            EventManager.TriggerEvent("GameStart");
            GUIManager.Instance.RefreshPoints ();
        }

        /// <summary>
        /// Starts or stops the autoincrement of the score
        /// </summary>
        /// <param name="status">If set to <c>true</c> autoincrements the score, if set to false, stops the autoincrementation.</param>
        public virtual void AutoIncrementScore(bool status)
        {
            if (status)
            {
                StartCoroutine(IncrementScore());
            }
            else
            {
                StopCoroutine(IncrementScore());
            }
        }

        /// <summary>
        /// Each 0.01 second, increments the score by 1/100th of the number of points it's supposed to increase each second
        /// </summary>
        /// <returns>The score.</returns>
        protected virtual IEnumerator IncrementScore()
        {
            while (true)
            {
                if ((GameManager.Instance.Status == GameStatus.GameInProgress) && (_pointsPerSecond!=0) )
                {
                    AddPoints(_pointsPerSecond / 100);
                }
                yield return new WaitForSeconds(0.01f);
            }
        }
        
        
        /// <summary>
        /// Adds the points in parameters to the current game points.
        /// </summary>
        /// <param name="pointsToAdd">Points to add.</param>
        public virtual void AddPoints(float pointsToAdd)
        {
            Points += pointsToAdd;
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.RefreshPoints ();
            }
        }
        
        /// <summary>
        /// use this to set the current points to the one you pass as a parameter
        /// </summary>
        /// <param name="points">Points.</param>
        public virtual void SetPoints(float points)
        {
            Points = points;
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.RefreshPoints ();
            }
        }

        /// <summary>
        /// use this to set the number of lives currently available
        /// </summary>
        /// <param name="lives">the new number of lives.</param>
        public virtual void SetLives(int lives)
        {
            CurrentLives = lives;
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.InitializeLives();
            }
        }
        
        /// <summary>
        /// use this to remove lives from the current amount
        /// </summary>
        /// <param name="lives">the number of lives you want to lose.</param>
        public virtual void LoseLives(int lives)
        {
            CurrentLives -= lives;
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.InitializeLives();
            }
        }

        /// <summary>
        /// sets the timescale to the one in parameters
        /// </summary>
        /// <param name="newTimeScale">New time scale.</param>
        public virtual void SetTimeScale(float newTimeScale)
        {
            _savedTimeScale = Time.timeScale;
            Time.timeScale = newTimeScale;
        }
        
        /// <summary>
        /// Resets the time scale to the last saved time scale.
        /// </summary>
        public virtual void ResetTimeScale()
        {
            Time.timeScale = _savedTimeScale;
        }
        
        /// <summary>
        /// Pauses the game
        /// </summary>
        public virtual void Pause()
        {
            // if time is not already stopped        
            if (Time.timeScale>0.0f)
            {
                Instance.SetTimeScale(0.0f);
                _statusBeforePause=Instance.Status;
                Instance.SetStatus(GameStatus.Paused);
                EventManager.TriggerEvent("Pause");
                if (GUIManager.Instance!=null)
                {
                    GUIManager.Instance.SetPause(true);
                }
            }
            else
            {
                UnPause();    
            }        
        }

        /// <summary>
        /// Unpauses the game
        /// </summary>
        public virtual void UnPause()
        {
            Instance.ResetTimeScale();
            Instance.SetStatus(_statusBeforePause);
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.SetPause(false);
            }
        }
    }

mauriciobrancalion
Iniciante
Iniciante

PONTOS : 551
REPUTAÇÃO : 2
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por John Rambo em Qui Ago 11, 2016 12:38 pm

Amigo use a caixa de códigos pra colocar seus scripts é o botao SCRIPT acima da caixa de comentários
avatar
John Rambo
Moderador

Masculino PONTOS : 2242
REPUTAÇÃO : 439
Idade : 18
Áreas de atuação :
Unity;
Programação;
Modelagem;
Criação de cenários;
Sonorização;

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por mauriciobrancalion em Qui Ago 11, 2016 3:24 pm

Ok!! Muito obrigado pelo toque!!!

farei assim!!

mauriciobrancalion
Iniciante
Iniciante

PONTOS : 551
REPUTAÇÃO : 2
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por Manawydan em Qui Ago 11, 2016 10:51 pm

Tente trocar o método AddPoints por esse:
Código:
public virtual void AddPoints(float pointsToAdd)
{
   Points += pointsToAdd;
   
   // extra
   if(Points%10==0){ // a cada 10 pontos
      LoseLives(-1); // adiciona 1 vida
      if(CurrentLives>TotalLives){ // certifica que nao passou do total
         CurrentLives = TotalLives;
      }
   }
   // extra
   
   if (GUIManager.Instance!=null)
   {
      GUIManager.Instance.RefreshPoints ();
   }
}
avatar
Manawydan
Moderador

PONTOS : 1127
REPUTAÇÃO : 178
Idade : 21
Respeito as regras :

Ver perfil do usuário https://wad.ojooo.com/register.php?ref=ManawydanBr

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por mauriciobrancalion em Sex Ago 12, 2016 9:43 am

Olá !!! Obrigado pelo script mas não surtiu nenhuma mudança.... apliquei ele dentro do Arquivo Game Manager certo? ou tem que ser no arquivo de coletaveis (coin) ?

muito grato!!!

mauriciobrancalion
Iniciante
Iniciante

PONTOS : 551
REPUTAÇÃO : 2
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por Manawydan em Sex Ago 12, 2016 1:29 pm

ok tente trocar o seu GameManager por esse script aki(mas faça um beckup antes caso falhe):
Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

namespace MoreMountains.InfiniteRunnerEngine
{    
    /// <summary>
    /// The game manager is a persistent singleton that handles points and time
    /// </summary>
    public class GameManager : MonoBehaviour
    {            
        /// the number of lives the player gets (you lose a life when your character (or your characters all) die.
        /// lose all lives you lose the game and your points.
        public int TotalLives = 3;
        /// The current number of lives
        public int CurrentLives { get; protected set;  }
        /// the current number of game points
        public float Points { get; protected set; }
        /// the current time scale
        public float TimeScale;
        /// the various states the game can be in
        public enum GameStatus { BeforeGameStart, GameInProgress, Paused, GameOver, LifeLost };
        /// the current status of the game
        public GameStatus Status{ get; protected set; }

        public delegate void GameManagerInspectorRedraw();
        // Declare the event to which editor code will hook itself.
        public event GameManagerInspectorRedraw GameManagerInspectorNeedRedraw;

        // storage
        protected float _savedTimeScale;
        protected IEnumerator _scoreCoroutine;
        protected float _pointsPerSecond;
        protected GameStatus _statusBeforePause;
        
        // singleton pattern
        static public GameManager Instance { get { return _instance; } }
        static protected GameManager _instance;
 
 // edit
 public float pointsToRestoreHealth = 10f; // acada 10 aumenta 1 vida, pode mudar se quiser
 private float lastPointUp = 0;
 // edit
 
        public void Awake()
        {
            _instance = this;        
        }

        /// <summary>
        /// Initialization
        /// </summary>
        protected virtual void Start()
        {
            CurrentLives = TotalLives;
            _savedTimeScale = TimeScale;
            Time.timeScale = TimeScale;
 
 // edit
 lastPointUp = pointsToRestoreHealth;
 // edit
 
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.Initialize();
            }
        }

        public virtual void SetPointsPerSecond(float newPointsPerSecond)
        {
            _pointsPerSecond = newPointsPerSecond;
        }
        
        /// <summary>
        /// Sets the status. Status can be accessed by other classes to check if the game is paused, starting, etc
        /// </summary>
        /// <param name="newStatus">New status.</param>
        public virtual void SetStatus(GameStatus newStatus)
        {
            Status=newStatus;
            if (GameManagerInspectorNeedRedraw != null) { GameManagerInspectorNeedRedraw(); }
        }
                
        /// <summary>
        /// this method resets the whole game manager
        /// </summary>
        public virtual void Reset()
        {
            Points = 0;
 // edit
 lastPointUp = pointsToRestoreHealth;
 // edit
            TimeScale = 1f;
            GameManager.Instance.SetStatus(GameStatus.GameInProgress);
            EventManager.TriggerEvent("GameStart");
            GUIManager.Instance.RefreshPoints ();
        }

        /// <summary>
        /// Starts or stops the autoincrement of the score
        /// </summary>
        /// <param name="status">If set to <c>true</c> autoincrements the score, if set to false, stops the autoincrementation.</param>
        public virtual void AutoIncrementScore(bool status)
        {
            if (status)
            {
                StartCoroutine(IncrementScore());
            }
            else
            {
                StopCoroutine(IncrementScore());
            }
        }

        /// <summary>
        /// Each 0.01 second, increments the score by 1/100th of the number of points it's supposed to increase each second
        /// </summary>
        /// <returns>The score.</returns>
        protected virtual IEnumerator IncrementScore()
        {
            while (true)
            {
                if ((GameManager.Instance.Status == GameStatus.GameInProgress) && (_pointsPerSecond!=0) )
                {
                    AddPoints(_pointsPerSecond / 100);
                }
                yield return new WaitForSeconds(0.01f);
            }
        }
        
        
        /// <summary>
        /// Adds the points in parameters to the current game points.
        /// </summary>
        /// <param name="pointsToAdd">Points to add.</param>
        public virtual void AddPoints(float pointsToAdd)
        {
            Points += pointsToAdd;
 
 // edit
 if(Points >= lastPointUp)
 {
 lastPointUp += pointsToRestoreHealth;
 LoseLives(-1); // adiciona 1 vida
 }
 // edit
 
 
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.RefreshPoints ();
            }
        }
        
        /// <summary>
        /// use this to set the current points to the one you pass as a parameter
        /// </summary>
        /// <param name="points">Points.</param>
        public virtual void SetPoints(float points)
        {
            Points = points;
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.RefreshPoints ();
            }
        }

        /// <summary>
        /// use this to set the number of lives currently available
        /// </summary>
        /// <param name="lives">the new number of lives.</param>
        public virtual void SetLives(int lives)
        {
            CurrentLives = lives;
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.InitializeLives();
            }
        }
        
        /// <summary>
        /// use this to remove lives from the current amount
        /// </summary>
        /// <param name="lives">the number of lives you want to lose.</param>
        public virtual void LoseLives(int lives)
        {
            CurrentLives -= lives;
 // edit
 if(CurrentLives>TotalLives) // certifica que nao passou do total
 CurrentLives = TotalLives;
 // edit
 
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.InitializeLives();
            }
        }

        /// <summary>
        /// sets the timescale to the one in parameters
        /// </summary>
        /// <param name="newTimeScale">New time scale.</param>
        public virtual void SetTimeScale(float newTimeScale)
        {
            _savedTimeScale = Time.timeScale;
            Time.timeScale = newTimeScale;
        }
        
        /// <summary>
        /// Resets the time scale to the last saved time scale.
        /// </summary>
        public virtual void ResetTimeScale()
        {
            Time.timeScale = _savedTimeScale;
        }
        
        /// <summary>
        /// Pauses the game
        /// </summary>
        public virtual void Pause()
        {
            // if time is not already stopped        
            if (Time.timeScale>0.0f)
            {
                Instance.SetTimeScale(0.0f);
                _statusBeforePause=Instance.Status;
                Instance.SetStatus(GameStatus.Paused);
                EventManager.TriggerEvent("Pause");
                if (GUIManager.Instance!=null)
                {
                    GUIManager.Instance.SetPause(true);
                }
            }
            else
            {
                UnPause();    
            }        
        }

        /// <summary>
        /// Unpauses the game
        /// </summary>
        public virtual void UnPause()
        {
            Instance.ResetTimeScale();
            Instance.SetStatus(_statusBeforePause);
            if (GUIManager.Instance!=null)
            {
                GUIManager.Instance.SetPause(false);
            }
        }
    }

E da proxima vez, quando for postar um script Clique na Caixa Script que esta de Preto, e cole o conteudo do seu script dentro da caixinha cinza que vai aparecer Marcada como code. Pois assim é mais facil visualizar e logo mais facil de ajudar.
avatar
Manawydan
Moderador

PONTOS : 1127
REPUTAÇÃO : 178
Idade : 21
Respeito as regras :

Ver perfil do usuário https://wad.ojooo.com/register.php?ref=ManawydanBr

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por mauriciobrancalion em Sex Ago 12, 2016 2:52 pm

Muito Grato!!! Funcionou!!!!  Ok!! já compreendi o botão Script para colar códigos aqui!!!

mauriciobrancalion
Iniciante
Iniciante

PONTOS : 551
REPUTAÇÃO : 2
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Relacionar quantidade de pontos/coleta com recuperação ou ganho de vida

Mensagem por Marc7 em Sex Ago 12, 2016 3:33 pm

Pessoal, eu ainda não domino o C# muito bem, apesar de já saber fazer alguns codigos de forma independente, por isso queria entender alguns codigos aproveitando o script do colega acima. vou listar os comandos que não conheço, se alguém puder explicar para que se usa agradeço. vamo lá:

{ get; protected set;  }   =>   como exemplo nas variaveis public int CurrentLives { get; protected set;  } , public float Points { get; protected set; } , etc



public event

protected float

protected IEnumerator

static public

static protected


sobre os metodos:
public virtual void
protected virtual void
public delegate void


uso doCoroutine:
StartCoroutine(IncrementScore());
StopCoroutine(IncrementScore());


yield return new
avatar
Marc7
Mestre
Mestre

PONTOS : 945
REPUTAÇÃO : 25
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum