Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Argo214

#46
[quote author=ACarranza" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34443" data-ipsquote-contentcommentid="123665">hola que tal amigo, hay muchas formas de hacer lo que ocupas, yo lo que te recomiendo que primero estructures bien lo que quieres hacer, en papel, anotes, dibujes todo lo que requiere tu juego, haz una lista completa de tus objetos con sus puntos y todas las condiciones que vas a necesitar en tu juego: luego:1) .si tu lista de objetos en si tienen la mismas propiedades y uso, nomas cambia los puntos por asi decirlo, te recomiendo que sean prefabs y que solo uses un tipo de tag digamos "pistas", ademas de usar un script generico para ellos, donde tengas publica la puntuacion y un id como identificador que es lo que estoy viendo requieres.asi cuando uses la funcion OnTriggerEnter compruebas que el tag sea "pistas" y accedes a la variable puntuacion.2). ahora si solo quieres que los objetos se sigan viendo pero no te den puntos, ocupas agregar una condicion mas a tu script del personaje, te recomiendo que sea un array de numeros donde estes guardando el ID del objeto que pasamos por el , cada vez que pasas por los objetos , revisa la lista si el id coincide con alguno de ellos, pues simplemente no agregues los puntos. Toma encuenta que al pasar de una escena a otra todos los objetos se reiniciaran incluyendo tu personaje, entonces ocupas guardar el estado actual de tu personaje con la lista incluida , esto se puede hacer con la funcion http://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html">http://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html , para al paso de de escenas sin destruir al personaje, ya si ocupas guardar los datos para futuras consultas, estan los playerprefbs , serializar o base de datos online, ahi depende de lo que necesites.. PD: con gusto te puedo orientar en lo que quieres hacer ... PD2: hace hambre...PD3: ire a comer bye bye...    [/quote]Muchas gracias! Pero necesito que me ayudes con el código porque soy bastante novato en esto. Parece que hay gente que recomienda hacerlo con http://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html date=1447800438]DontDestroyOnLoad y otros con PlayerPrefs. En cuanto a lo que comentas de crear un sólo tipo de tag para las pistas, si lo hago así ¿cómo se diferenciarán las pistas que van a tener distinta puntuación?Por otro lado, creo que tengo clara la estructura de pantallas y los objetos de cada escena, pero sigo sin saber cómo hacer para que las pistas que encontré en una escena y me dieron puntos, al volver a esa escena sigan apareciendo pero ya no me den puntos. Necesito que me corrijas el código que puse antes para verlo en ese caso en concreto, si te es posible. Gracias de nuevo.
#47
[quote author=mrpacogp" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34443" data-ipsquote-contentcommentid="123627">Porque al cargar la escena todo vuelve a estar como antes, con lo cual debes de guardar valores o ajustes de una pantalla antes de salir.Por ejemplo, puedes crear un array de objetos y guardarlos en un xml con sus propiedades y luego cargarlos al cargar la escena.O puedes usar la clase de unity playerprefs que te permite guardarlo y luego recuperarlo.int pista1 = Playersprefs.GetInt("Pista1")si pista1= 0 no usado, activalo, si es uno ya está usado.Como lo cambias?, cuando entre al colider, PlayerPrefs.SetInt("Pista1",1);De todas formas, para usar cientos de objetos, yo te recomiendo guardar y cargar todo en un xml o txt.[/quote]Muchas gracias!!! He intentado hacer lo que me dices pero no lo consigo. Te pongo lo que he puesto por si me lo puedes corregir. Gracias otra vez.using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PuntosPistas : MonoBehaviour {
    
    public static int puntuacion;
    public Text TextoContador;

    int pista1 = PlayerPrefs.GetInt("pista1");
    int pista2 = PlayerPrefs.GetInt("pista2");

    void Start ()
    {
        TextoContador.text = "Puntos = " + puntuacion;
    }

    void OnTriggerEnter(Collider other)
    {

        if (other.gameObject.tag == "pista1"){
            other.gameObject.SetActive(false);
            
            puntuacion = puntuacion + 5;
            TextoContador.text = "Puntos = " + puntuacion;

            PlayerPrefs.SetInt("pista1",1);
        }
            
        if (other.gameObject.tag == "pista2"){
            other.gameObject.SetActive(false);
                
            puntuacion = puntuacion + 10;
            TextoContador.text = "Puntos = " + puntuacion;

            PlayerPrefs.SetInt("pista2",1);
            
        }
        
    }
#48
[quote author=mrpacogp" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34443" data-ipsquote-contentcommentid="123625">Pues sencillo. Les pones una bool usado.Cuando se han usado bool = true; con lo cual si es true no des mas puntos.Mas sencillo aún, les quitas el colider, o les cambias el tag, no sé, hay mil opciones. [/quote]Pero cuando vuelvo a esa escena me lo vuelve a cargar todo sin tener en cuenta que ya había encontrado ese objeto. Pongo a continuación cómo tengo puesto lo que pasa al llegar al objeto por primera vez, pero no sé qué añadir para que al llegar a ese objeto por segunda vez desde otra escena, no siga sumando puntos.void OnTriggerEnter(Collider other)
    {
        
        if (other.gameObject.tag == "pista1"){
            other.gameObject.SetActive(false);
            
            puntuacion = puntuacion + 5;
            TextoContador.text = "Puntos = " + puntuacion;
#49
Buenos días! Estoy metido con un juego que en esencia consiste en que el player va buscando objetos por varias escenas y cuando los encuentra recibe puntos. El problema que tengo es al pasar de unas escenas a otras en la búsqueda, que cuando regreso a las escenas en las que ya había estado encuentro que los objetos que me dieron puntos me los siguen dando cuando paso por ellos y lo que quiero es poder seguir viéndolos pero que no me sigan dando puntos. ¿Cómo puedo conseguirlo?
#50
General (Antiguo) / Ayuda para hacer un SCORE
Noviembre 16, 2015, 09:50:22 PM
Muchas gracias. Lo conseguí!!!! Pero ahora tengo un nuevo problema. Al llegar a los objetos consigo los puntos, pero al ir a otras escenas y luego volver a las anteriores, los objetos que me dieron puntos siguen proporcionándomelos, cuando lo que quiero es que una vez recogidos estos puntos, ya no den más. ¿Cómo puedo conseguirlo?
#51
General (Antiguo) / Ayuda para hacer un SCORE
Noviembre 13, 2015, 04:50:41 PM
[quote author=Mantis" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34407" data-ipsquote-contentcommentid="123407">Usa static,  PlayerPrefs es para guardar datos una vez hemos salido de la aplicación.Te creas un script y metes tu variable puntuación.en C#public static int puntuacion;en JSpublic static var puntuacion : int;El valor de esta variable se conserva entre escenas y no es necesario que el script este en la escena.
 [/quote]He hecho lo que comentas pero el marcador sigue arrancando de cero al pasar a la segunda escena. Esta es la script del player en la escena original:using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PuntosPistas : MonoBehaviour {
    
    public static int puntuacion;
    public Text TextoContador;
    
    void Start ()
    {
        puntuacion = 0;
        TextoContador.text = "Puntos = " + puntuacion;
    }

    void OnTriggerEnter(Collider other)
    {
        
        if (other.gameObject.tag == "pista"){
            other.gameObject.SetActive(false);
            
            puntuacion = puntuacion + 5;
            TextoContador.text = "Puntos = " + puntuacion;
        }
            
        if (other.gameObject.tag == "pista2"){
            other.gameObject.SetActive(false);
                
            puntuacion = puntuacion + 10;
            TextoContador.text = "Puntos = " + puntuacion;
        }
        
    }
}
 Y esta es la que he puesto en el player en la segunda escena: [lo mismo que en la primera pero eliminando el void Start ()]using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PuntosPistas2 : MonoBehaviour {
    
    public static int puntuacion;
    public Text TextoContador;

    
    void OnTriggerEnter(Collider other)
    {
        
        if (other.gameObject.tag == "pista"){
            other.gameObject.SetActive(false);
            
            puntuacion = puntuacion + 5;
            TextoContador.text = "Puntos = " + puntuacion;
        }
        
        if (other.gameObject.tag == "pista2"){
            other.gameObject.SetActive(false);
            
            puntuacion = puntuacion + 10;
            TextoContador.text = "Puntos = " + puntuacion;
        }
        
    }
#52
General (Antiguo) / Ayuda para hacer un SCORE
Noviembre 13, 2015, 09:54:34 AM
[quote author=pioj" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34407" data-ipsquote-contentcommentid="123363">Si sólo va a haber un score, puedes hacerlo Static, sin problemas.Truconsejo: http://answers.unity3d.com/questions/200820/is-comparetag-better-than-gameobjecttag-performanc.html date=1447333127]gameobject.CompareTag es más rápido que comparar el string del tag, literalmente...[/quote]Muchas gracias. Lo voy a mirar. Cómo tengo qué hacer para que la puntuación del Score se mantenga al salir de cada escena?
[quote author=mrpacogp" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34407" data-ipsquote-contentcommentid="123390 date=1447357966]Usa la clase playerprefs.setint Enviado desde mi iPhone utilizando Tapatalk[/quote]Pues no me aclaro. Dónde tengo que poner esa clase? En la escena inicial en el Player? En las demás escenas? Dónde?
#53
General (Antiguo) / Ayuda para hacer un SCORE
Noviembre 12, 2015, 08:50:45 PM
[quote author=mrpacogp" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34407" data-ipsquote-contentcommentid="123360">Si el objeto lo haces publico y es de la clase Text no necesitas hacer un getcomponent<text> y simplemente lo seleccionas desde el inspector.El player en este caso tiene un contador y la clase puntuación que no se donde está tiene otro contador.No es recomendable, pero algo rápido seria en la clase puntuación hacer "static" el score:static public int contador;Luego desde la clase player, modifica el contador en el trigger asi:puntuacion.contador +=5;Lo entiendes? [/quote]Pues creo que me he liado. Le aplicaba la clase "puntuacion" al UIText donde está el contador de puntos y estoy viendo que con aplicar sólo la segunda (PuntosPistas) al Player parece que me funciona, aunque no sé si lo estoy haciendo bien. Al final la que estoy aplicando al Player es:using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PuntosPistas : MonoBehaviour {
    
    public Text TextoContador;
    private static int counter;
    
    void Start ()
    {
        counter = 0;
        TextoContador.text = "Puntos = " + counter;
    }

    void OnTriggerEnter(Collider other)
    {
        
        if (other.gameObject.tag == "pista"){
            other.gameObject.SetActive(false);
            
            counter = counter + 5;
            TextoContador.text = "Puntos = " + counter;
        }
            
        if (other.gameObject.tag == "pista2"){
            other.gameObject.SetActive(false);
                
            counter = counter + 10;
            TextoContador.text = "Puntos = " + counter;
        }
        
    }
#54
General (Antiguo) / Ayuda para hacer un SCORE
Noviembre 12, 2015, 12:41:02 PM
Buenas! Soy nuevo en esta comunidad y me gustaría que me echarais una mano con unos scripts. Tengo una escena muy sencilla donde quiero colocar un Score que vaya recogiendo puntuaciones. Se trata de que el Player, al colisionar con varios objetos ("pista"), vaya sumando puntos.Me he creado un UIText y le he aplicado este script:using UnityEngine;using System.Collections;using UnityEngine.UI; public class puntuacion : MonoBehaviour {        public int counter = 0;     Text TextoContador;         void Start () {        TextoContador = GetComponent<Text> ();         TextoContador.text = "" + counter;     }        void Update () {         TextoContador.text = "P = " + counter;         }} Y al Player le he aplicado la siguiente: using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class PuntosPistas : MonoBehaviour {

    public Text TextoContador;
    private int counter;

    
    void OnTriggerEnter(Collider other)
    {
        
        if (other.gameObject.tag == "pista"){
            other.gameObject.SetActive(false);
            
            counter +=5;
            TextoContador.text = "P = " + counter;
        }
        
    }
}
 El resultado es que el Score no refleja los puntos ganados cuando el Player llega a los objetos y siempre está en 0.Tampoco sé cómo hacer para que al llegar a cada objeto sume una cantidad distinta. O sea, que cada objeto tenga una puntuación. A ver si me podéis ayudar. Muchas gracias!!