Los tipos estáticos no pueden ser Serializados, por lo tanto Unity no guardara los Cambios. Te recomiendo no hacer estática la lista, y utilzar un Singleton.
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.
#526
General (Antiguo) / [EditorWindow] Al modificar una lista estática de Audioclips no guarda cambios
Julio 18, 2016, 03:01:55 PM #527
General (Antiguo) / Navegador dentro de Unity
Julio 06, 2016, 04:21:52 PM
Quizas esto te sirva un poco mas, o fusionando lo de Jose134 + htmlTexture.
http://wiki.unity3d.com/index.php/HtmlTexturePlugin
http://wiki.unity3d.com/index.php/HtmlTexturePlugin
#528
General (Antiguo) / [Duda] Cómo hago un fondo degradado que cambie de color
Julio 04, 2016, 07:58:31 PM
Haces una lista de colores y luego tomas 2 en modo random, pintas la mitad de los pixeles de un color y la otra de otro dentro de un Enumerador y luego lo llamas desde una corrutina y ya esta!
#529
General (Antiguo) / Bala atraviesa objectos
Julio 04, 2016, 03:22:38 PM
Tendrias que largar un RayCast funcionan mucho mejor cuando se trata de colisiones a gran velocidad.
Si sigue sin funcionar puede cambiar el tiempo de actualización de detección de colisiones en setting physics.
Si sigue sin funcionar puede cambiar el tiempo de actualización de detección de colisiones en setting physics.
#530
General (Antiguo) / CoderEngine
Junio 29, 2016, 03:12:35 PMCita de: Jose134 date=1467125913No es mala idea pero yo no tengo ni idea de java, en ese lenguaje solo hice un pequeño reloj siguiendo un tutorial y prácticamente acabe copiando el codigo entero del video xD
Puedes crear una librería tambien, y utilizarlo desde Java.
https://msdn.microsoft.com/es-es/library/bb972252.aspx
Lo estuve probando y esta genial, me gusta mucho como está programado, todo comentado y muy prolijo, te felicito por eso, en cuanto a diseño, diria que falta un poco de planeamiento, algunos diagramas y objetivos claves.
Me gustaria ayudarte, en lo que necesites, ahora mismo podría ayudarte en una interfaz de diseño, o bien compartiendo un diseño gráfico para el juego de demostración.
Si quieres ayuda escribeme por MP, ahora mismo no tengo mucho tiempo pero esta clase de proyectos me gustan bastante, aun que de principio me parecen algo ambicioso, tambien te podria ayudar en un Sistema de Networking, UI o lo que necesites...
Un abrazo!
#531
General (Antiguo) / Editor Test
Junio 08, 2016, 07:22:25 PM
P = Parameter = Parámetro.
M = Method = Método.
Los Accesores GET and SET sirven para muchas cosas, por ejemplo, si necesitas obtener el valor de una variable desde fuera de la clase pero no quieres dar permisos para cambiar utilizas 2 variables una interna y la variable de salida.
get significa tomar, set significa asignar.
Te recomendaría empezar por un curso en programacion .Net y C# para que puedas entender un poco más de que se trata.
M = Method = Método.
Los Accesores GET and SET sirven para muchas cosas, por ejemplo, si necesitas obtener el valor de una variable desde fuera de la clase pero no quieres dar permisos para cambiar utilizas 2 variables una interna y la variable de salida.
private int _myValue = 100;
public int MyValue {get{return _myValue;}}
get significa tomar, set significa asignar.
Te recomendaría empezar por un curso en programacion .Net y C# para que puedas entender un poco más de que se trata.
#532
General (Antiguo) / Mejor manera para un script healthBar
Junio 08, 2016, 02:23:11 AM
Lo que te recomiendo hacer:
FÁCIL : Utilizar SendMessage si te deja desde el tipo Component la parte fácil utilizar.
DIFÍCIL : Utilizar eventos.
Los eventos son algo muy útil, te recomiendo que aprendas a utilizarlos y que hagas mucho uso de los mismo.
¿Como lo harías?
Bien para crear un evento necesitamos de un delegado que el "Header" de nuestro evento.
y con este delegado creamos el evento.
¿Cómo se utilizar?
Los eventos tiene una forma muy simple de ser utilizados, podemos hacerlo de múltiples maneras, las mas comunes en la práctica son, funciones Lambda, Delegados Neutros, o métodos.
¿Se entiende?
Espero que sea de ayuda, si necesitas algo házmelo saber
FÁCIL : Utilizar SendMessage si te deja desde el tipo Component la parte fácil utilizar.
DIFÍCIL : Utilizar eventos.
Los eventos son algo muy útil, te recomiendo que aprendas a utilizarlos y que hagas mucho uso de los mismo.
¿Como lo harías?
Bien para crear un evento necesitamos de un delegado que el "Header" de nuestro evento.
public delegate void DelegateDie(GameObject obj);
y con este delegado creamos el evento.
public event DelegateDie EventDied;
¿Cómo se utilizar?
Los eventos tiene una forma muy simple de ser utilizados, podemos hacerlo de múltiples maneras, las mas comunes en la práctica son, funciones Lambda, Delegados Neutros, o métodos.
public class HealtBar : MonoBehaviour
{
private int _maxHealt = 100;
private int _currentHealt = 100;
public delegate void DelegateDie(GameObject obj);
public event DelegateDie EventDie;
public void ApplyDamage(int value)
{
_currentHealt -= value;
if(_currentHealt < 1)
{
if(EventDie != null) EventDie(gameObject);
}
}
}
public class Actor : MonoBehaviour
{
private HealtBar _healtBar = null;
private void Start()
{
this._healtBar = GetComponent<HealtBar>();
this._healtBar.EventDie += OnDie;
}
public virtual void OnDie(GameObject obj)
{
print("Healt Bar nos informa que el Objeto "+obj.name+" Esta muerto");
}
}
¿Se entiende?
Espero que sea de ayuda, si necesitas algo házmelo saber
#533
General (Antiguo) / problema con juego que lee un archivo de texto
Junio 06, 2016, 05:21:50 AM
Debes utilizar la carpeta Resources.
#534
General (Antiguo) / AddForce siempre en la parte Trasera aun al moverse
Junio 03, 2016, 06:22:34 PM
El problema del disparo arriba y abajo es que supongo que estas tomado la dirección Forward del Jugador y este mismo no rota en su Eje X, esta rotación se realiza en la Cámara, entonces para un correcto funcionamiento te recomiendo tomar la dirección Forward de la cámara.
#535
General (Antiguo) / AddForce siempre en la parte Trasera aun al moverse
Junio 03, 2016, 05:00:04 PM
Deberias de analizar un poco el problema.
1 - Dependiendo del arma, pero por lo general, un revólver dispara la munición a X velocidad, es decir, la fuerza que se aplica en la recámara para que la munición pase de tener una velocidad de movimiento de 0 a X. Quiero decir que el concepto de añadir fuerzas está mal, pero obviamente esto puede variar dependiendo el efecto que se quiera lograr.
2 - Conceptos basicos de fisica, la programacion de videojuegos no solo es utilizar métodos pensando que en 2 lineas vas a resolver los problemas, ¿Sí?, entonces partimos por lo más básico, las fuerzas se aplican en un Punto, con una dirección y el propio valor de la fuerza, existen factores más avanzados para la simulación como el rozamiento y otras características, pero no creo que sea necesario en este ejemplo.
Bien, partiendo de el sencillo análisis que acabamos de realizar podemos decir que lo necesario para efectuar el disparo es una velocidad constante y una dirección, supongamos que el Jugador tiene 3 direccion posibles, Left, Top, Right. los disparos se deben efectuar en relacion a la direccion actual del jugador.
Para poder realizar dicho disparo, necesitarás :
1 - Tomar la dirección actual del jugador, y normalizar. Verás muchas veces que en casos similares se utiliza una variable de retorno de Transform llamada forward, esta sirve, justamente para retornarlos la dirección en dirección hacia adelante del jugador, esto lo logra, gracias a un método que toma la rotación actual del jugador en relacion con uno de sus ejes, en este caso(Y), y lo convierte en un vector de dirección normalizado.
2 - Indicar la velocidad en la que la munición se mantendrá constante al momento del disparo.
Ejemplo
Es importante entender porque se multiplica la dirección por un valor para obtener una velocidad, esto se debe a que en principio todos los vectores de dirección trabajan con valores en todos sus ejes de 1 a -1.
Espero que esto sirva.
Descubre material como este en Mi Blog
1 - Dependiendo del arma, pero por lo general, un revólver dispara la munición a X velocidad, es decir, la fuerza que se aplica en la recámara para que la munición pase de tener una velocidad de movimiento de 0 a X. Quiero decir que el concepto de añadir fuerzas está mal, pero obviamente esto puede variar dependiendo el efecto que se quiera lograr.
2 - Conceptos basicos de fisica, la programacion de videojuegos no solo es utilizar métodos pensando que en 2 lineas vas a resolver los problemas, ¿Sí?, entonces partimos por lo más básico, las fuerzas se aplican en un Punto, con una dirección y el propio valor de la fuerza, existen factores más avanzados para la simulación como el rozamiento y otras características, pero no creo que sea necesario en este ejemplo.
Bien, partiendo de el sencillo análisis que acabamos de realizar podemos decir que lo necesario para efectuar el disparo es una velocidad constante y una dirección, supongamos que el Jugador tiene 3 direccion posibles, Left, Top, Right. los disparos se deben efectuar en relacion a la direccion actual del jugador.
Para poder realizar dicho disparo, necesitarás :
1 - Tomar la dirección actual del jugador, y normalizar. Verás muchas veces que en casos similares se utiliza una variable de retorno de Transform llamada forward, esta sirve, justamente para retornarlos la dirección en dirección hacia adelante del jugador, esto lo logra, gracias a un método que toma la rotación actual del jugador en relacion con uno de sus ejes, en este caso(Y), y lo convierte en un vector de dirección normalizado.
2 - Indicar la velocidad en la que la munición se mantendrá constante al momento del disparo.
Ejemplo
private Transform _player;
private float _bulletSpeed = 10;
private void Shot()
{
var playerDir = _player.forward; // Tomamos la direccion del Jugador
var bullet = new GameObject().AddComponent<RigidBody>(); // Creamos un Objeto con el componente Rigidbody
bullet.velocity = playerDir * _bulletSpeed; // Asignamos la Velocidad y Direccion
}
Es importante entender porque se multiplica la dirección por un valor para obtener una velocidad, esto se debe a que en principio todos los vectores de dirección trabajan con valores en todos sus ejes de 1 a -1.
Espero que esto sirva.
Descubre material como este en Mi Blog
#536
General (Antiguo) / Duda sobre "clampear" la cámara
Junio 03, 2016, 03:40:22 PM
El problema se debe a que el valor que deseas clampear no justamente trabaja de 90 a -90. Si rotas en el eje X un objeto en sentido de agujas del reloj el valor se incrementa, es decir 1 -> 2 -> 3 -> Etc, pero si la rotación es al sentido contrario el valor empieza a disminuir a partir de 360, es decir 360 -> 359 -> 358, viéndolo de esta manera te podrás dar cuenta que es imposible clampear este valor sin contemplar dicho evento, para esto la fórmula de limitar ángulos.
Necesitas el Ángulo actual, y los valores de limitación, Mínimo y Máximo.
1- Comprobar si Ángulo es < a -360, de ser así entonces se le suma 360.
2- Comprobar si Ángulo es > a 360, de ser así se le resta 360.
3- Utilizando la función Clamp incluida en la librería de Unity Mathf, realizamos las limitacion.
Ejemplo
De esta manera puedes aplicar una limitación en los ángulos de rotación.
Existe una alternativa diferente para rotar la cámara, esta es aún más utilizada que la anterior, se trata de modificar el EulerAngle de la Cámara, estos valores si van de ++ 0,1,2 y -- 0,-1,-2, entonces se pueden limitar naturalmente con el método Clamp de Unity.
Ejemplo
Espero que esta info te ayude.
Vas a encontrar mas material en : Mi blog
Saludos
Necesitas el Ángulo actual, y los valores de limitación, Mínimo y Máximo.
1- Comprobar si Ángulo es < a -360, de ser así entonces se le suma 360.
2- Comprobar si Ángulo es > a 360, de ser así se le resta 360.
3- Utilizando la función Clamp incluida en la librería de Unity Mathf, realizamos las limitacion.
Ejemplo
private float LimitAngle(float Angle, float Min, float Max)
{
if(Angle < -360) Angle += 360;
if(Angle > 360) Angle -= 360;
return Mathf.Clamp(Angle, Min, Max);
}
De esta manera puedes aplicar una limitación en los ángulos de rotación.
Existe una alternativa diferente para rotar la cámara, esta es aún más utilizada que la anterior, se trata de modificar el EulerAngle de la Cámara, estos valores si van de ++ 0,1,2 y -- 0,-1,-2, entonces se pueden limitar naturalmente con el método Clamp de Unity.
Ejemplo
private void RotateCamera()
{
Vector3 currenEulerAngle = cam.transform.eulerAngle;
var mouseY = Input.GetAxis("Mouse Y") * MouseSensivity;
currenEulerAngle.x = Mathf.Clamp(currenEulerAngle.x + MouseY, MinRotation, MaxRotation);
cam.transform.eulerAngle = currenEulerAngle;
}
Espero que esta info te ayude.
Vas a encontrar mas material en : Mi blog
Saludos
#537
General (Antiguo) / Comprobación de X en un objeto
Mayo 06, 2016, 02:13:41 PM
Podrías utilizar un método de interpolador de posiciones.
transform.position = Vector3.Lerp(transform.posiiton, new Vector3(10,10,10), * Time.deltaTime);Existen otros métodos como MoveTowars...Espero haberte ayudado.
#538
General (Antiguo) / ¿pre-carga de objetos?
Mayo 05, 2016, 06:57:48 PM
[quote author=Ionog" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35786" data-ipsquote-contentcommentid="130561 date=1462441305]Buenas,No puedes dejar los objetos activados, y usar tecnicas como oclussion culling?(De este modo, no se renderizarán los objetos si están detras de otro objeto...etc)Saludos.[/quote]Claro, pero suponiendo que el problema no radica en el Rendimiento de renderizado, como entendí yo, el necesitaba activar objetos.
Pero volviendo a leer me di cuenta que el problema radica en el primer Backeado de la Escena, eso se puede solucionar haciendo un Backeado de la Iluminación y Sombras, y luego dejar solo los Objetos dinámicos, y tambien utilizando la técnica de Lonog para reducir los polígonos a procesar. Suerte -.
Pero volviendo a leer me di cuenta que el problema radica en el primer Backeado de la Escena, eso se puede solucionar haciendo un Backeado de la Iluminación y Sombras, y luego dejar solo los Objetos dinámicos, y tambien utilizando la técnica de Lonog para reducir los polígonos a procesar. Suerte -.
#539
General (Antiguo) / ¿pre-carga de objetos?
Mayo 04, 2016, 05:34:02 PM
El problema radica en que estas exigiendo a cargar objetos de repente.. Es decir si vas caminando y de repente se activan 30 Objetos es muy obvio que se va a tildar, ni hablar de si tienen muchos polígonos, esto tambien puede ser causa del PC que estas utilizando... Pero todo tiene una solución...Trata de activar los Objetos desde una Corrutina.. con un For
private IEnumerator ActiveObjects(GameObject[] objs)De esta manera entonces no tildamos el hilo "UPDATE" que es el que "hace" que nuestro juego se actualice Frame por Frame... (Explicacion algo mala, porque la verdad no es de esta manera, es mucho mas complejo). Espero ayudarte..
{
foreach(var o in objs)
{
o.SetActive(true);
yield return null;
}
yield break;
}
#540
General (Antiguo) / OnTriggerStay al reves?
Abril 30, 2016, 06:32:42 PM
OnTriggerNOTStay PRESTAR ATENCIÓN.