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 - El preguntón

#1
Impresionante sencillez, gracias por la ayuda de todos vosotros que así he podido ver las diferentes formas de resolver este problema. Ahora me da rabia pensar que no había caído en una ecuación tan fácil.
#2


Hola,
 


No sé ni por dónde empezar a programar esto, pero aquí va el planteamiento:
 


Tengo dos variables floats, las cuales vamos a llamar A y B. La variable A, va de 0 a 1; la variable B va de -180 a 180. Mediante unos controles, puedo hacer variar la primera variable A entre estos dos valores.
 


La duda es cómo hacer lo que voy a explicar a continuación: cuando A sea 0, B será -180; cuando A sea 1, B será 180. Así pues, ¿Cuál será el valor de B si por ejemplo A es igual a 0.15? ¿Qué operación matemática o función de las que tiene Mathf me podrían servir para hacer esto?
 


Gracias de antemano y un saludo.

#3
Cita de: kaito date=1499963322Podrias crear subrutinas o subprocesos utilizando corrutinas con un bucle infinito, while(true), iniciadas desde Start():
   
   

using UnityEngine;
using System.Collections;
public class FuncionesConPausa : MonoBehaviour {
    public int pulsacionesA;
    public int pulsacionesB;
    public int pulsacionesC;
// Use this for initialization
void Start () {
        //Funciones con pausa utilizando corrutinas
        StartCoroutine(this.PulsarA());
        StartCoroutine(this.PulsarB());
        StartCoroutine(this.PulsarC());

}
    IEnumerator PulsarA()
    {
        while (true)
        {
            yield return null;
            if (Input.GetKey(KeyCode.A))
            {
                //Lo que pasaria al pulsar A
                this.pulsacionesA++;
                yield return new WaitForSeconds(2f);
            }
        }
    }
    IEnumerator PulsarB()
    {
        while (true)
        {
            yield return null;
            if (Input.GetKey(KeyCode.B))
            {
                //Lo que pasaria al pulsar B
                this.pulsacionesB++;
                yield return new WaitForSeconds(2f);
            }
        }
    }
    IEnumerator PulsarC()
    {
        while (true)
        {
            yield return null;
            if (Input.GetKey(KeyCode.C))
            {
                //Lo que pasaria al pulsar C
                this.pulsacionesC++;
                yield return new WaitForSeconds(2f);
            }
        }
    }
}

   
       
   


Tronco, eres un FENÓMENO!

#4
Muchas gracias The Bullet y Kalua66. ¡Ah! Y también Lightbug por la aportación.
#5


Wow! Eso está muy bien lightbug... Pero yo me refería después del último clic, y según el que me has pasado se ejecuta dos segundos más tarde después del primer clic y, los clics que se pulsen después durante esos dos segundos los ignora.
 


Yo buscaba que hiciese esto pero al revés, que ignorara todos los clics hasta el último el cual sería el que iniciaría la corutina. Por eso, por ejemplo, si pulsara una segunda vez un segundo y medio después del primer clic, volvería a esperar otra vez dos segundos sin aplicar la función del primer clic, porque habría pulsado otra vez dentro del margen de tiempo de la corutina.
 


¿Existe alguna forma de reiniciar la corutina mientras cuenta o algo por el estilo? A si por ejemplo, supongo que se podría lograr que cada vez que se pulsa empieza de nuevo la corutina y solo se ejecutaría la función cuando terminase el tiempo.
 
 
 
 

#6


Hola comunidad,
 


Estaba haciendo un proyecto personal y necesitaba hacer que en pulsar una tecla una o barias veces seguidas, se ejecuta una única vez  y dos segundos más tarde que el último clic una determinada función. He hecho una prueba, que es la siguiente:


using UnityEngine;
using System.Collections;
public class prueba : MonoBehaviour {
private bool _limite = false;
void Update ()
{
   if(Input.GetKeyDown(KeyCode.Space))
   {
      _limite = true;
      StartCoroutine (Espera ());
   }
}
IEnumerator Espera()
{
   yield return new WaitForSeconds (2);
   if(_limite == true)
   {
      _limite = false;
      Debug.Log ("Funciona!");
   }
}
}


 
Como podéis ver, en un principio funciona correctamente, es decir, si pulso un vez o más solo se ejecuta una sola vez el mensaje. Pero el problema es que con este código si pulso todo el rato durante más de dos segundos ya no funciona como yo quería, envía mensajes a la consola por cada uno de los clics.
 


Aun soy novato en programación, así que supongo que aparte de hacerlo mal me he complicado un poco la vida. Así que, ¿alguien tiene una idea de cómo lograr esto?.
 


Muchas gracias de antemano.

#7
Cita de: pioj date=1493022917Lógica Booleana:
   
   


  •          Cuando 2 condiciones se deben cumplir a la vez, es un AND. ( &&)
          

  •       

  •          Cuando cualquiera de las 2 condiciones pueden complirse , es un OR. ( ||) 
          

  •       

  •          Cuando ninguna de las 2 condiciones deben cumplirse, es un NOT. ( != )
          

  •    

       
   
   
      @El preguntón Por favor, cambia el título de tu tema, por otro título que quede mucho más concreto y claro para la web. "Pregunta Rápida" no es un buen título para buscar respuestas similares en un foro.
   
   
      Leete las Normas de la Comunidad, o revisa las guías del foro Primeros Pasos.
   


Tienes razón pioj,  pero no sé cómo se cambia el título del tema. Si me lo podrías decir...
 


Sobre la duda, no consigo ver el error. Mi objetivo era que realizara una función en entrar en un trigger con un tag y que pulsara la barra de espacio. Pero no se me ejecuta. ¿Qué podría hacer para solucionar esto?
 



void OnTriggerEnter(Collider other)
{
   if (other.CompareTag("Tag") && Input.GetKeyDown(KeyCode.Space))
   {
      // Función
   }
}


 

 
#8
Cita de: kalua66 date=1492953623

if (other.gameObject.CompareTag ("tagA") || other.gameObject.CompareTag ("tagB")){



Ok, gracias. Por curiosidad, ¿Cómo sería para añadir que cumpla dos condicionales a la vez?

#9
¿Cómo se podría poner de una forma más corta este código?   Me refiero si se podría poner esto en un mismo solo condicional. Perdonadme si la pregunta es tonta, pero es que no sé mucho de programación.
 
 
 
 
 

void OnTriggerStay(Collider other)
{
   if (other.gameObject.CompareTag ("tagA"))
   {
      _speedMove = 0;
   }
   if (other.gameObject.CompareTag ("tagB"))
   {
      _speedMove = 0;
   }
}

 
Gracias de antemano.
 
 
 
 
#10
General (Antiguo) / No sé qué he hecho mal
Diciembre 08, 2016, 02:01:17 PM


Gracias por lo que me habéis dicho kingtrase y lightbug. Pero sigo sin entender porque no me funciona. Estaba haciendo con objetos primitivos a modo de prueba antes de empezar con modelos bien hechos lo que muestro abajo en el gif. Quería que cuando disparara a un objeto este se destruyera al colisionar con un tag; es decir, que le cubo se destruya. Pero no sé porque no se destruye. Empiezo a pensar que el problema no se trata del script, sino que de otra cosa. Pero no sé el que. El tag se lo he puesto a la esfera verde del video y en el cubo el script que había preguntado.
 
 
 

#11
General (Antiguo) / No sé qué he hecho mal
Diciembre 06, 2016, 11:47:54 AM


Estaba haciendo un juego en el cual se destruía un objeto al colisionar con un tag. Así es como me quedó:
 



function OnTriggerEnter (collider : Collision){
if(collider.tag == "tag")
{
   Destroy(gameObject);
}
}


 
Pero no entiendo porque no funciona. Yo no sé mucho de programación, soy un iniciado, así que si alguien me pudiese ayudar se lo agradecería de antemano.
#12
General (Antiguo) / TROPICAL PARADISE
Marzo 09, 2016, 09:03:01 PM
Hola comunidad, me he encontrado con unos problemas en la consola al importar "Tropical paradise" de Unity Live Demos. Como ya he dicho otras veces no sé mucho de programación así que no entiendo lo que me quiere decir. A más, ¿Por qué sucede esto en Unity 5 y no en Unity 4? En la versión anterior no me pasaba. ¿Qué es lo que debo hacer para solucionar todos estos errores?
 
Gracias antes de nada
 



   
       
   
   
      1) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(72,17): error CS0619: `UnityEngine.Component.camera' is obsolete: `Property camera has been deprecated. Use GetComponent<Camera>() instead. (UnityUpgradable)'
   
   
      2) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(72,24): error CS1061: Type `UnityEngine.Component' does not contain a definition for `depthTextureMode' and no extension method `depthTextureMode' of type `UnityEngine.Component' could be found (are you missing a using directive or an assembly reference?)
   
   
      3) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(103,30): error CS0619: `UnityEngine.Component.camera' is obsolete: `Property camera has been deprecated. Use GetComponent<Camera>() instead. (UnityUpgradable)'
   
   
      4) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(103,37): error CS1061: Type `UnityEngine.Component' does not contain a definition for `fieldOfView' and no extension method `fieldOfView' of type `UnityEngine.Component' could be found (are you missing a using directive or an assembly reference?)
   
   
      5) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(104,29): error CS0619: `UnityEngine.Component.camera' is obsolete: `Property camera has been deprecated. Use GetComponent<Camera>() instead. (UnityUpgradable)'
   
   
      6) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(104,36): error CS1061: Type `UnityEngine.Component' does not contain a definition for `farClipPlane' and no extension method `farClipPlane' of type `UnityEngine.Component' could be found (are you missing a using directive or an assembly reference?)
   
   
      7) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(106,31): error CS0619: `UnityEngine.Component.camera' is obsolete: `Property camera has been deprecated. Use GetComponent<Camera>() instead. (UnityUpgradable)'
   
   
      8) Assets/Pro Standard Assets/Image Based/SSAOEffect.cs(106,38): error CS1061: Type `UnityEngine.Component' does not contain a definition for `aspect' and no extension method `aspect' of type `UnityEngine.Component' could be found (are you missing a using directive or an assembly reference?)
   
   
       
   

[/quote]
 
 
#13
General (Antiguo) / Esto nunca me había pasado
Febrero 28, 2016, 01:40:14 PM

Pues tenías razón Braltor y hammer, era eso, gracias a los tres por querer ayudarme

#14
General (Antiguo) / Esto nunca me había pasado
Febrero 28, 2016, 10:52:15 AM

He revisado las dos cosas que me habéis dicho, pero ese no debe de ser el problema, es más, he aplicado ese mismo material a otros objetos (que no son cuerpos de revolución obviamente) y ha funcionado correctamente. ¿Alguien sabe cómo podría solucionarlo?

#15
General (Antiguo) / Esto nunca me había pasado
Febrero 27, 2016, 01:44:38 PM

 

Hola a todos, me he encontrado con un problema cuando he exportado desde Cinema 4D a Unity 3D. Lo he hecho con .fbx y con .obj, pero sigue sucediendo. El problema es que una vez tengo exportado el modelo a Unity, le sucede algo, se ve el interior (pero no es transparente). Creo que lo veréis más claro con un modelo de prueba que he puesto abajo (Gif) para que lo comparéis y lo veáis por vuestros propios ojos. Solo me sucede con los cuerpos de revolución, es decir, con los splines haciéndolos hijos del torno. Las preguntas son:

1. ¿Por qué sucede esto?

2. ¿Cómo lo soluciono?

Les agradezco mucho vuestra ayuda