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:
Verificar inventario
Unity Ads ou AdMob!
Render texture invertida
Como fazer barco estilo minecraft ou estilo navio que da pra andar dentro
Como fazer para o tiro ir para a direção onde o cano está apontado e não para cima
Como locomover um trem
Me ajudem, com a criação de terreno !
Pequeno problema com no Debug
Como fazer Escudo seguir a movimentação do Player?
Building System
TELEPORT 2D
Adicionar linhas no TXT pelo codigo
[TUTORIAL] Sistema de inventário Sobrevivência
Formação De Equipe Pra Criar RPG
Como não perder qualidade nas texturas 2d?
IDB JAM #10
MOVIMENTAÇÃO EM 8 DIREÇÕES.
animações não sendo reproduzidas
Seguir um raio no raycast a partir do ponto da tela clicado
Personagem morrer ao cair da tela
Deixar objeto invisível.
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Divulgaçao de Battle of Worlds
[Resolvido]Problema nesse pequeno script
Movimentação
Puzzle para jogo de terror , abrir portas etc..
Script para mudar posição do personagem
Baixos Brasil - Jogo de Carro Brasileiro!
Como saber quando minha animação terminou?
system inventory , craft
ajuda
Aplicar roupa no Rig do blender...
Project Valley of Trees - Primeiro nome que faz sentido KK
A.S TRUCK
Som de correr não para de tocar
Reproduzir audio no if c## e musica continuar tocando entre cenas.
Como Colocar Pontuação Final na GUI de GAME OVER
Unity 2017 Iluminação RealTime VS Baked [Comparaçâo]
DUVIDA : Raycast
Programador para equipe
Da pra colocar sisteminha em um jogo da unity pra trolar quem for piratear o jogo?
Como colocar musicas em sequencia para tocar?
Trajetória da bala com predição
Ajudinha com Bug
[RESOLVIDO] Poblema com Rigidbody
[DEVLOG] Projeto - Girl Blade (download Pré-Alpha)
Erro ao bulidar para Windows(.exe)
Mudar a gravidade com rotação (sensores do smartphone)
Problemas na detecção de colisão
Trabalhar simultaneamente na Unity
Movimetaçao infinita
(duvida)pq isso acontece com o inimigo?
[TUTORIAL] Unity 5 - Wheel Collider, veículos, suspensão realista.
[DUVIDA] Como alterar a intensidade do ChromaticAberration do PostProcessing?
Joystick VR não funciona no ios
Problema na minha animação feita na Unity
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
IA para inimigo seguir o jogador ( Plataforma )
Tirar Fotos no Unity 5 FPS
[TUTORIAL] Cena inicial de CARREGAMENTO, creditos, logo, etc [UNITY 5]
Como Limitar Spawn de Hordas
Desmembramento
Exemplo de UI com abas - utilizando toggles e toggle group.
Ajuda Blender
Quando Instancio botão ele não aparece no canvas
Sistema de pesca 2D
[TUTORIAL] Derrubar arvores e dropar madeiras dela
Auto-Complete do Visual Studios
Metroidvania - procuro membros
Criação de Update para Seus jogos?
Blender, animação + Unity
Preciso de alguém que desenvolva Craft, e Inventario com sistema de Bolsas, Pago bem
Detectar Hit
[MODELADOR] Procurando Projetos
Carákas que Tops WO.OW
Anexar GameObject por scrit
Como cria um sistema de seve game
[DUVIDA] Trocar botoes no teclado por joystick UI
Efeito de Audio
Bug de sumir todas as modelagens 3D na unity 2017
Quero fazer minha propria lens flare
Menu para selecao de cena
Dificuldades com programação no Unity 5 2D
Bug ? offline e online
Conflito de ações HELP
como saber a posição que a particula bateu?
Formação de Equipe Battle of Worlds
[JOGO EM BETA] Batalha de Canhão
Jogo de sobrevivência na ilha PRE-Alpha
Inimigo ao encostar morre e player leva dano UNITY 5 2D
Como faço blocos que somem so clikando neles 1 vez?
Light Bug
Como criar inventário simples no unity
Como fasso para que clico em um botao e aumente o volume junto com grave em uma musica?
como que criar um sitema tipo o do rocket league
tem como criar um modelo no sketchup e exportar pra unity, mas sem os componentes
(duvida)pq aconteçe isso com a luz
Como posso deixar o MENU do meu jogo adequado ao monitor?
Dúvida com o Update
Ontem à(s) 10:40 pm
Ontem à(s) 10:03 pm
Ontem à(s) 9:37 pm
Ontem à(s) 9:36 pm
Ontem à(s) 9:31 pm
Ontem à(s) 7:17 pm
Ontem à(s) 6:16 pm
Ontem à(s) 5:37 pm
Ontem à(s) 4:02 pm
Ontem à(s) 3:54 pm
Ontem à(s) 12:19 pm
Ontem à(s) 12:17 pm
Ontem à(s) 11:00 am
Ontem à(s) 9:00 am
Qua Set 20, 2017 11:07 pm
Qua Set 20, 2017 9:27 pm
Qua Set 20, 2017 7:22 pm
Qua Set 20, 2017 7:17 pm
Qua Set 20, 2017 6:01 pm
Qua Set 20, 2017 9:57 am
Qua Set 20, 2017 7:07 am
Qua Set 20, 2017 12:13 am
Ter Set 19, 2017 11:53 pm
Ter Set 19, 2017 10:15 pm
Ter Set 19, 2017 8:34 pm
Ter Set 19, 2017 7:40 pm
Ter Set 19, 2017 4:29 pm
Ter Set 19, 2017 12:25 pm
Ter Set 19, 2017 12:14 pm
Ter Set 19, 2017 10:55 am
Ter Set 19, 2017 10:26 am
Ter Set 19, 2017 8:21 am
Ter Set 19, 2017 2:42 am
Seg Set 18, 2017 10:20 pm
Seg Set 18, 2017 9:16 pm
Seg Set 18, 2017 8:40 pm
Seg Set 18, 2017 8:39 pm
Seg Set 18, 2017 8:08 pm
Seg Set 18, 2017 4:33 pm
Seg Set 18, 2017 2:22 pm
Seg Set 18, 2017 12:15 pm
Seg Set 18, 2017 9:33 am
Seg Set 18, 2017 8:21 am
Seg Set 18, 2017 12:59 am
Dom Set 17, 2017 5:04 pm
Dom Set 17, 2017 3:45 pm
Dom Set 17, 2017 10:49 am
Sab Set 16, 2017 11:18 pm
Sab Set 16, 2017 5:57 pm
Sab Set 16, 2017 4:10 pm
Sab Set 16, 2017 3:05 pm
Sab Set 16, 2017 2:23 pm
Sab Set 16, 2017 12:40 pm
Sab Set 16, 2017 12:16 pm
Sab Set 16, 2017 10:17 am
Sab Set 16, 2017 9:53 am
Sab Set 16, 2017 9:26 am
Sab Set 16, 2017 9:10 am
Sex Set 15, 2017 11:51 pm
Sex Set 15, 2017 8:27 pm
Sex Set 15, 2017 7:27 pm
Sex Set 15, 2017 6:17 pm
Sex Set 15, 2017 3:08 pm
Sex Set 15, 2017 11:19 am
Sex Set 15, 2017 9:43 am
Qui Set 14, 2017 11:50 pm
Qui Set 14, 2017 9:08 pm
Qui Set 14, 2017 3:17 pm
Qui Set 14, 2017 1:55 pm
Qui Set 14, 2017 12:13 pm
Qui Set 14, 2017 10:07 am
Qua Set 13, 2017 9:52 pm
Qua Set 13, 2017 11:34 am
Ter Set 12, 2017 10:33 pm
Ter Set 12, 2017 10:21 pm
Ter Set 12, 2017 9:34 pm
Ter Set 12, 2017 8:52 pm
Ter Set 12, 2017 8:51 pm
Ter Set 12, 2017 7:05 pm
Ter Set 12, 2017 6:53 pm
Ter Set 12, 2017 6:51 pm
Ter Set 12, 2017 3:04 pm
Ter Set 12, 2017 2:04 pm
Ter Set 12, 2017 11:54 am
Ter Set 12, 2017 9:59 am
Ter Set 12, 2017 9:43 am
Ter Set 12, 2017 12:17 am
Seg Set 11, 2017 8:54 pm
Seg Set 11, 2017 8:48 pm
Seg Set 11, 2017 8:12 pm
Seg Set 11, 2017 7:18 pm
Seg Set 11, 2017 6:15 pm
Seg Set 11, 2017 6:02 pm
Seg Set 11, 2017 5:31 pm
Seg Set 11, 2017 5:22 pm
Seg Set 11, 2017 5:06 pm
Seg Set 11, 2017 4:53 pm
Seg Set 11, 2017 4:17 pm
Seg Set 11, 2017 4:15 pm
916anderson
Duarte
g
Unidade3d5
Weslley
Zecandy
EndStarsProgramming2
ManoTrevor
JorgeLuizxd
AndyShow
Weslley
Weslley
916anderson
Bruno
JorgeLuizxd
dimmuo
Weslley
Phph09
Weslley
Bruno
GabriG07
Dom3000
Dom3000
g
Weslley
Zecandy
Weslley
Duarte
artplayer
PatifeCraft
Lteo
Fagner
Madness
PatifeCraft
dstaroski
eduu10
JorgeLuizxd
MateusWTP
Weslley
Brunotrinkss
guimaraf
Weslley
guimaraf
ManoTrevor
PedroL123
dstaroski
GabriG07
Brgs886
Madness
Fagner
PedroL123
glauco
Callyde Jr
JorgeLuizxd
Henrique Ramires
Weslley
Weslley
Weslley
Weslley
Weslley
Weslley
916anderson
rafaelllsd
Fagner
Fagner
rafaelllsd
PatifeCraft
Weslley
Carlin
artplayer
Ronnisz
Jhonatham1
Callyde Jr
mrariel2011
AndyShow
Fagner
PatifeCraft
Alerson Software
AndyShow
AndyShow
AndyShow
Alessandra Matheus
Lteo
Callyde Jr
Weslley
Dom3000
Dom3000
dstaroski
dstaroski
guilhermeprata
DUT
Duarte
PatifeCraft
heliab125
MarcosSchultz
MarcosSchultz
glauco
MarcosSchultz
MarcosSchultz

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 : 433
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 : 1859
REPUTAÇÃO : 326
Á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 : 433
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 : 1001
REPUTAÇÃO : 175
Idade : 20
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 : 433
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 : 2016
REPUTAÇÃO : 407
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 : 433
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 : 1001
REPUTAÇÃO : 175
Idade : 20
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 : 433
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 : 1001
REPUTAÇÃO : 175
Idade : 20
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 : 433
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 : 826
REPUTAÇÃO : 24
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