[RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
5 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
- Código:
timer
using System.Collections;
using UnityEngine.SceneManagement;
public class TEMPOCENA : MonoBehaviour {
private float Cronometro;
public int Tempo;
public string Cena;
void Update () {
Cronometro += Time.deltaTime;
if (Cronometro >= Tempo) {
SceneManager.LoadScene (Cena);
}
}
}
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
Utilize a função OnCollisionEnter() e aumente o valor da variável cronometro.
Algo Assim:
Algo Assim:
- Código:
OnCollisionEnter(Collision col){
if(col.gameObject.tag == "ObjetoQueAumentaOTempo){
Cronometro += 10;
}
}
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
TassoCervi escreveu:Utilize a função OnCollisionEnter() e aumente o valor da variável cronometro.
Algo Assim:
- Código:
OnCollisionEnter(Collision col){
if(col.gameObject.tag == "ObjetoQueAumentaOTempo){
Cronometro += 10;
}
}
- Código:
OnCollisionEnter (){ http://erro.esperado;//
se puder consertar
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
johns escreveu:TassoCervi escreveu:Utilize a função OnCollisionEnter() e aumente o valor da variável cronometro.
Algo Assim:
- Código:
OnCollisionEnter(Collision col){
if(col.gameObject.tag == "ObjetoQueAumentaOTempo){
Cronometro += 10;
}
}
- Código:
OnCollisionEnter (){ //erro.esperado;//
se puder consertar
Não entendi o que aconteceu.
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
Vamos la, vou responder mais detalhadamente.
O que você quer é:
- Caso o personagem colida com o Objeto1 aumente o valor do Cronometro em 10(por exemplo)
Como fazer:
- Você cria um script chamado "AumentaTempo" e o coloca no seu personagem, o script deve ter algo assim:
O objeto "ObjetoQueRecebeOScriptTEMPOCENA" é como o nome diz, o objeto que esta no seu jogo e tem no inspector dele o script que você colocou acima "TEMPOCENA".
No if(col.gameObject.tag == "ObjetoQueOPersonagemDeveColidir) ele esta verificando se o seu personagem colidiu com um objeto que tem a Tag "ObjetoQueOPersonagemDeveColidir", você sabe como funcionam as tags né?
E dentro do if ele recebe o valor do Cronometro, adiciona 10 e envia o valor novo para o Cronometro.
Simples assim
O que você quer é:
- Caso o personagem colida com o Objeto1 aumente o valor do Cronometro em 10(por exemplo)
Como fazer:
- Você cria um script chamado "AumentaTempo" e o coloca no seu personagem, o script deve ter algo assim:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AumentaTempo: MonoBehaviour {
public GameObject ObjetoQueRecebeOScriptTEMPOCENA;
public int cronometro;
void OnCollisionEnter2D (Collision2D col){
if (col.gameObject.tag == "ObjetoQueOPersonagemDeveColidir") {
cronometro = ObjetoQueRecebeOScriptTEMPOCENA.GetComponent<TEMPOCENA>().Cronometro;
cronometro += 10;
ObjetoQueRecebeOScriptTEMPOCENA.GetComponent<TEMPOCENA>().Cronometro = cronometro;
}
}
}
O objeto "ObjetoQueRecebeOScriptTEMPOCENA" é como o nome diz, o objeto que esta no seu jogo e tem no inspector dele o script que você colocou acima "TEMPOCENA".
No if(col.gameObject.tag == "ObjetoQueOPersonagemDeveColidir) ele esta verificando se o seu personagem colidiu com um objeto que tem a Tag "ObjetoQueOPersonagemDeveColidir", você sabe como funcionam as tags né?
E dentro do if ele recebe o valor do Cronometro, adiciona 10 e envia o valor novo para o Cronometro.
Simples assim
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
desculpa mas esqueci de citar que meu jogo é em 3D
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
Apenas mude de:johns escreveu:desculpa mas esqueci de citar que meu jogo é em 3D
OnCollisionEnter2D(Collision2D col)
para:
OnCollisionEnter(Collision col)
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
E um jogo de carro ???
Chilinger- MembroAvançado
- PONTOS : 4091
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
simChilinger escreveu:E um jogo de carro ???
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
deu mais um erroTassoCervi escreveu:Apenas mude de:johns escreveu:desculpa mas esqueci de citar que meu jogo é em 3D
OnCollisionEnter2D(Collision2D col)
para:
OnCollisionEnter(Collision col)
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
troca "public int" para "public float"
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
Basta trocar a declaração que é:
public int cronometro
para:
public float cronometro
public int cronometro
para:
public float cronometro
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
ele passa mas não ocorre nadaTassoCervi escreveu:Basta trocar a declaração que é:
public int cronometro
para:
public float cronometro
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
johns escreveu:ele passa mas não ocorre nada
Você quer dizer o personagem colide com o objeto e não aumenta o tempo
ou
O script continua dando erro
??
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
colide com o objeto e não aumenta o tempo(e vai para cena de game over).
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
Talvez isso esteja ocorrendo porque no seu script TEMPOCENA diz que quando Cronometro >= tempo o jogo deve ir para a cena de game over. Você deve estar aumentando tanto o cronometro que ja chega na cena de game over por ficar maior que o tempo.johns escreveu:colide com o objeto e não aumenta o tempo(e vai para cena de game over).
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
realmente não ocorre nada.e vai para cena de game over(porque o tempo esgotou)TassoCervi escreveu:Talvez isso esteja ocorrendo porque no seu script TEMPOCENA diz que quando Cronometro >= tempo o jogo deve ir para a cena de game over. Você deve estar aumentando tanto o cronometro que ja chega na cena de game over por ficar maior que o tempo.johns escreveu:colide com o objeto e não aumenta o tempo(e vai para cena de game over).
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
johns escreveu:realmente não ocorre nada.e vai para cena de game over(porque o tempo esgotou)TassoCervi escreveu:Talvez isso esteja ocorrendo porque no seu script TEMPOCENA diz que quando Cronometro >= tempo o jogo deve ir para a cena de game over. Você deve estar aumentando tanto o cronometro que ja chega na cena de game over por ficar maior que o tempo.johns escreveu:colide com o objeto e não aumenta o tempo(e vai para cena de game over).
Então pelo que entendi esta funcionando o que você queria:
- Quando o personagem colidisse com um objeto aumentasse o tempo, fazendo ele perder mais rapido.
caso você tenha se confundido e quisesse que quando atingisse o objeto o jogador ganhasse mais tempo para o jogador poder continuar a fase, nesse caso basta trocar no codigo AumentaTempo a linha:
cronometro += 10;
para:
cronometro -= 10;
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
cara, você poderia um print do seu inspector por favor
kalel013- Avançado
- PONTOS : 3143
REPUTAÇÃO : 30
Idade : 24
Áreas de atuação : Artista 3d (blender), iniciante em programação (python e PHP), iniciante em arte 2d (InkScape)
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
galera então andei vasculhando uns fórum gringo e achei o que queria mas tá faltando carregar a sena de gameover quando o tempo se esgota se alguém conseguir,agradeço desde já.
- Código:
using UnityEngine;
using System.Collections;
public class Timer : MonoBehaviour
{
public float timeRemaining;
void Update()
{
timeRemaining -= Time.deltaTime;
}
void OnGUI()
{
if (timeRemaining > 0)
{
GUI.Label(new Rect(100, 100, 200, 100),
" " + (int) timeRemaining);
}
else
{
GUI.Label(new Rect(150, 150, 300, 150), "Time's Up");
}
}
}
- Código:
using UnityEngine;
using System.Collections;
public class DestroyByExit : MonoBehaviour
{
public float lifetime;
public GameObject Timer;
private Timer time;
public GameObject add;
// Use this for initializations
void Start()
{
time = Timer.GetComponent<Timer>();
Destroy(gameObject, lifetime);
}
void OnTriggerEnter (Collider add)
{
time.timeRemaining += 10;
}
}
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
johns escreveu:galera então andei vasculhando uns fórum gringo e achei o que queria mas tá faltando carregar a sena de gameover quando o tempo se esgota se alguém conseguir,agradeço desde já.
- Código:
using UnityEngine;
using System.Collections;
public class Timer : MonoBehaviour
{
public float timeRemaining;
void Update()
{
timeRemaining -= Time.deltaTime;
}
void OnGUI()
{
if (timeRemaining > 0)
{
GUI.Label(new Rect(100, 100, 200, 100),
" " + (int) timeRemaining);
}
else
{
GUI.Label(new Rect(150, 150, 300, 150), "Time's Up");
}
}
}
- Código:
using UnityEngine;
using System.Collections;
public class DestroyByExit : MonoBehaviour
{
public float lifetime;
public GameObject Timer;
private Timer time;
public GameObject add;
// Use this for initializations
void Start()
{
time = Timer.GetComponent<Timer>();
Destroy(gameObject, lifetime);
}
void OnTriggerEnter (Collider add)
{
time.timeRemaining += 10;
}
Para carregar a cena "Game Over" você só precisa colocar a função de LoadScene dentro do else nessa parte do código:
- Código:
if (timeRemaining > 0)
{
GUI.Label(new Rect(100, 100, 200, 100),
" " + (int) timeRemaining);
}
else
{
GUI.Label(new Rect(150, 150, 300, 150), "Time's Up");
}
TassoCervi- Membro
- PONTOS : 2912
REPUTAÇÃO : 7
Idade : 25
Áreas de atuação : Progamador C#
Respeito as regras :
Re: [RESOLVIDO] como add tempo ao timer ao encostar em um objeto?
obrigado pela ajuda ate aqui,deu certo :DTassoCervi escreveu:johns escreveu:galera então andei vasculhando uns fórum gringo e achei o que queria mas tá faltando carregar a sena de gameover quando o tempo se esgota se alguém conseguir,agradeço desde já.
- Código:
using UnityEngine;
using System.Collections;
public class Timer : MonoBehaviour
{
public float timeRemaining;
void Update()
{
timeRemaining -= Time.deltaTime;
}
void OnGUI()
{
if (timeRemaining > 0)
{
GUI.Label(new Rect(100, 100, 200, 100),
" " + (int) timeRemaining);
}
else
{
GUI.Label(new Rect(150, 150, 300, 150), "Time's Up");
}
}
}
- Código:
using UnityEngine;
using System.Collections;
public class DestroyByExit : MonoBehaviour
{
public float lifetime;
public GameObject Timer;
private Timer time;
public GameObject add;
// Use this for initializations
void Start()
{
time = Timer.GetComponent<Timer>();
Destroy(gameObject, lifetime);
}
void OnTriggerEnter (Collider add)
{
time.timeRemaining += 10;
}
Para carregar a cena "Game Over" você só precisa colocar a função de LoadScene dentro do else nessa parte do código:
- Código:
if (timeRemaining > 0)
{
GUI.Label(new Rect(100, 100, 200, 100),
" " + (int) timeRemaining);
}
else
{
GUI.Label(new Rect(150, 150, 300, 150), "Time's Up");
}
johns- Iniciante
- PONTOS : 2871
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [Resolvido]Como faz pra ativar um "objeto" depois de um tempo
» [RESOLVIDO] como fazer um timer? e algo tipo.
» como fazer um Objeto ir parando com o tempo?
» [RESOLVIDO] Como fazer um objeto 2D rotacionar em direção a outro objeto
» [RESOLVIDO] como fazer um objeto trocar de cor ao colidir com outro objeto
» [RESOLVIDO] como fazer um timer? e algo tipo.
» como fazer um Objeto ir parando com o tempo?
» [RESOLVIDO] Como fazer um objeto 2D rotacionar em direção a outro objeto
» [RESOLVIDO] como fazer um objeto trocar de cor ao colidir com outro objeto
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos