Jump to content
UnitySpain

Search the Community

Showing results for tags 'javascript'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Inicio
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
  • Mesa de ayuda
    • Unity
    • Arte
    • Otras Especialidades
    • Builds & Dispositivos
  • Aportes de la Comunidad
    • Recursos
    • Eventos
    • Buenas Prácticas
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Blogs

  • byGui

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 13 results

  1. Buenos días, os presento mi nuevo videojuego, realizado en javascript, con unity 343f3, es un juego FPS (disparos en primera persona), en el cual, hay que llegar a 100 kills, la partida esta 24 horas abierta, al llegar a 100 kills se reinicia. Para ello hay diferentes armas Cuchillo, Pistola, Metralleta y Escopeta, tienes que buscar la munición por el escenario y los medical kit para reestablecer la vida. Los personajes son cubos, estilo minecraft, ya que cuesta mucho trabajo meter un personaje animado, de momento no lo he hecho, lo he dejado con cubos para ser mas sencillo. El sistema de disparos es raycasting, el juego esta programado en javascript al 100% con el sistema online tradicional de Unity. Soporta hasta 64 jugadores en linea y el lag esta compensado para que no haya problemas en movimiento/rotacion, tambien para que vaya fluido. Controles: ASDW y raton para moverse , apuntar, y disparar. TAB: Ver puntuaciones E: Usar R: Recargar Space: Saltar Esc: Recuperar ratón para salir 1,2,3,4 / Rueda del raton: Seleccionar arma (cuchillo, pistola, metralleta, escopeta) Si quereis probarlo os dejo unas fotos y el link: Descarga: https://www.dropbox.com/s/6oe4dqj74skycf3/Fps200.rar?dl=0
  2. Hola alguien que sepa JavaScript tiene que saber algo de JSON, hasta ahora lo que aprendi de JSON es que con { } creo como "un campo que espera datos" Pero tengo este problema, necesito insertar como un especie de Header en 3 variables /*Esto estoy haciendo para que me quede prolijo Pero estoy alamcenando un Array donde uso un solo elemento, estoy gastando memoria al pedo*/ { "NameBlock": "Block (1)", "SpawnPoint": [ { "x": 0.0, "y": 0.0, "z": -1.0 } ] } /*Esto es la forma que yo conosco para insertar 3 variables sin un array pero lo tengo muy desprolijo y no se entiende nada*/ { "NameBlock": "Block (1)", "x": 0.0, "y": 0.0, "z": -1.0 } /*Necesito algo como esto, tener mas prolijo mis 3 variables, como se puede hacer?*/ { "NameBlock": "Block (1)", "SpawnPoint": { "x": 0.0, "y": 0.0, "z": -1.0 } } nose si se entiende, pero quiero tener una especie de header, para entender mejor la lectura del codigo
  3. Hola, que tal?, muy buenas. Hacia mucho que no venia por estos lares (años), pero ahora que me quede sin trabajo y que ando de novio, para hacer algo especial por nuestro aniversario, volvi a las andadas con unity. Primero, esto me costo entenderlo ya que desde la version 3 de unity que no lo usaba (por dios, cambiaron tantas cosas...). Pero vamos al lio. Aclaración: no soy experto, seguramente haya mas maneras de hacer esto mismo, y mas prolijo. Pero por ahora me doy por satisfecho. Bien, vamos con el primero codigo (explicacion en el mismo): #pragma strict //Declaro las variables (En este codigo solo hay 3 funciones, PLAY, STOP y SIGUIENTE-este ultimo es automatico al darle stop-) public var sereproduce : boolean; //Para reproducir var objeto : GameObject; //para un raycast, en este objeto se encuentra un plano que reproduce el video var daleplay : Video.VideoPlayer; //Plano, este lo asigno en esta variable mediante el inspector var clips : Video.VideoClip[]; //Array de todos los clips de video que se van a reproducir en el plano var clips2 : Video.VideoClip; //Segunda variable, Video no permite "slide", no se que es pero sin esta no funciona var siguiente : int; //Subindice para nuesto array de clips function Start () { sereproduce = false; clips = Resources.LoadAll.<Video.VideoClip>("Videos"); //Levanto toidos los videos que se encuentren en la carpeta "Assets/Resources/Videos" for(var i=; i < clips.length; i++){ print(clips[i].name); //Bastante simple, para saber que levantó y asignó a nuestro array todos los videos } siguiente = ; } function Update () { if(siguiente >= clips.length){ //Nuestro subindice para el array siguiente = ; } if (Input.GetButtonDown("Usar")) { var hit : RaycastHit; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); } if (Physics.Raycast(ray,hit)) { if (hit.collider.name == objeto.name && sereproduce == false) { //Si golpea con un objeto con el mismo nombre que el objeto que asigne al gameobject Y si no se reproduce nada... clips2 = clips[siguiente]; //Aca asigno nuestro primer clip de video del array a nuestra segunda variable daleplay.clip = clips2; //Aca a nuesto VideoPlayer daleplay.Play(); //Comienza a reproducir print(daleplay.clip.name); //Por si las moscas, un poco de debug no viene mal sereproduce = true; } else if (hit.collider.name == objeto.name && sereproduce == true){ daleplay.Stop(); sereproduce = false; siguiente ++; } } } //Se puede hacer con isPlaying, cambiando la variable "sereproduce", pero me daba algunos problemas, tal vez por mi codigo, no soy experto, pero bueno, asi quedo andando. Bueno, no se asusten, el segundo es mas facil... Here we go again! #pragma strict //Creamos nuestras variables señores ///NOTA: esto esta muy bueno para adaptarlo a algun sistema de inventario de algun juego, aunque yo no llego a tanto var texturas : Texture2D[]; //Un hermoso array de texturas 2D var imagenes : GameObject; //Nuestro "plano-cubo-esfera" o lo que quieran, que vayan a asignarle texturas var ingresarespera : boolean; //Nuesto limitador a la hora de hacer los cambios de textura automaticos var subindice : int; //Como dice, subindice de nuestro array function Start () { texturas = Resources.LoadAll.<Texture2D>("Fotos"); //Mismo que el de arriba, tomamos el array, y le asignamos todo lo que se encuentre en la carpeta FOTOS, que sea del tipo TEXTURA 2D for(var i=; i < texturas.length; i++){ print(texturas[i].name); } ingresarespera = true; subindice = ; print(ingresarespera); print(subindice); } function Update () { if(ingresarespera == true){ ingresarespera = false; print(subindice); Espera(); } } function Espera(){ if(subindice < texturas.length){ imagenes.GetComponent.<Renderer>().material.mainTexture = texturas[subindice]; //obtenemos el componente para renderizar, con su material original, le asignamos la nueva textura subindice ++; yield WaitForSeconds (5); ingresarespera = true; //Lo ponemos a True, para el siguiente conteo =D } else{ //Si no es menor el subindice... osea, si el subindice es igual o mayor que el largo de nuestro array (siempre asi, sino el OutOfRange de los huevos) subindice = ; //Ponemos el subindice a cero para repetir todo de nuevo yield WaitForSeconds (5); ingresarespera = true; //Volvemos a repetir } } Tal vez a alguien le sirva, la guia y el manual de unity no dan a entender nada y fueron HORAS de intentar. En fin. Que esta bien y todo, pero si esto nisiquiera esta explicado en el scripting manual de unity, que te dice "es la funcion inherente a esta otra funcion" y vas en circulos todo el rato. Ya veo en 8bit de tanto darle vueltas... Suerte y hasta la proxima! =D EDIT: por un comentario de otro usuario cambie los comentarios del script, en todo caso, si asi esta mas entendible y "limpio" haganmelo saber.
  4. Hola a tod@s! Sigo con mi proyecto de aprendizaje con Unity y JavaScript. Ahora estoy desarrollando un script para un enemigo. Por ahora he conseguido que el enemigo rote mirando al personaje conforme éste cambia su posición. Ahora bien, el enemigo siempre rota siguiendo al personaje, pero lo que me interesa es que si el personaje está a una altura diferente, el enemigo no lo detecte y no rote conforme el personaje se mueve... El script que tengo es este: #pragma strict var target : Transform; function Start () { } function Update () { //var pos = transform.position - target.position; // Siempre de espaldas var pos = target.position - transform.position; // De cara var rot = Quaternion.LookRotation (pos, Vector3.forward); transform.rotation = Quaternion.Slerp (transform.rotation, rot, 2*Time.deltaTime); } He probado con hacer algo como if (transform.position == target.position){ //var pos = transform.position - target.position; // Siempre de espalda var pos = target.position - transform.position; // De cara var rot = Quaternion.LookRotation (pos, Vector3.forward); transform.rotation = Quaternion.Slerp (transform.rotation, rot, 2*Time.deltaTime); } else { print ("Enemy 'Y' position is "+ transform.position.y); print ("Character 'Y' position is "+ target.position.y); } } Pero el "if" no se cumple nunca. He probado a cambiar la altura del GameObject que actúa como target y varias cosas más, pero no consigo que se cumpla nunca y no sé cómo podría solucionarlo o plantearlo de otra forma. A ver si algun@ me puede echar una mano a enfocar la cosa... Mil gracias, Saludos!
  5. Buenos días Estoy acostumbrado a la GUI antigua y ahora he empezado a utilizar la UI moderna intentando hacerlo todo sin me ter código. Tengo unas variables vida, puntuación, etc. y he generado un texto como UI en la pantalla ¿Como hago para que estas se vean en pantalla? Antes era muy fácil por que generaba la GUI desde el Script, pero ahroa como lo genero todo desde Unity... pues no tengo ni idea. Muchas gracias.
  6. Hola a tod@s, Estoy estancado en un proyecto y necesito ayuda. En mi escenario, el personaje tiene que hacer un recorrido y, al final de éste, recoger un objeto. Al hacerlo, el personaje vuelve al punto de partida y debe hacer de nuevo el recorrido para volver a recoger el objeto. Hasta ahí no hay problema. El tema está en que una vez hecho esto, si el tiempo que tarda en hacer el recorrido por segunda vez es inferior al tiempo invertido la primera vez, se debe mostrar en consola un mensaje de felicitación y es ahí donde me he quedado bloqueado y no encuentro la forma de solucionarlo. El problema (creo) está en la función "OnTriggerEnter". Adjunto el código para ver si me podéis echar un cable: #pragma strict //Variables OBJETOS CON EFECTOS TEMPORALES var scriptPersonaje : UnityStandardAssets.Characters.ThirdPerson.ThirdPersonCharacter; var contador : float; var contador_switch : boolean; var reloj : float; var tiempoinvertido : float; var record : float; //Variables RAYCAST var hit : RaycastHit; //Variables MUERTE var onGround: boolean = true; // nos dice cuando el personaje está en caida var firstY : float; // Posición inicial del personaje var lastY : float; // La última posición del personaje en que tocaba suelo var hFall : float; var character: CharacterController; var salud : int = 20; function Start () { firstY = transform.position.y; } function Update () { //RAYCAST if (Physics.Raycast(transform.position, transform.forward, hit, 5)){ if (hit.collider.gameObject.tag=="interruptores"){ print ("Estoy tocando el interruptor. Pulsa 'E' para recogerlo"); if(Input.GetKeyDown("e")) { print ("He cogido el interruptor"); Destroy(hit.collider.gameObject); } } } reloj = reloj + Time.deltaTime; //ITEMS DE TIEMPO LIMITADO if (contador_switch){ // Esta variable controla el tiempo que los items de tamaño y velocidad están activos contador = contador + Time.deltaTime; if(contador>5){ contador = ; contador_switch = false; } } else { scriptPersonaje = GetComponent (UnityStandardAssets.Characters.ThirdPerson.ThirdPersonCharacter); scriptPersonaje.m_MoveSpeedMultiplier = 1; transform.localScale = new Vector3 (1f, 1f, 1f); } } // FUNCIONES DE COLISIONES function OnCollisionEnter(collision: Collision) { // COLISIONES CON ITEMS Y LÍMITES DEL ESCENARIO // Podría ser también: // function OnCollisionEnter (hit:Collision){ if (collision.gameObject.tag== "cubo") { // if (hit.gameObject.tag== "cubo") { print ("Estoy Chocando Con El Cubo"); // print ("Estoy Chocando Con El Cubo"); } // } if (collision.gameObject.tag== "limite"){ print ("No creo que deba ir por ahí"); } // COLISIONES PARA CONTROLAR CUANDO ESTAMOS EN EL SUELO if (collision.gameObject.tag=="suelo") { //Cada vez que tocamos el suelo grabamos nuestra última posición lastY = transform.position.y; hFall = firstY - lastY; if (hFall > 4){ print ("GAME OVER"); // Si caemos de una altura de más de 4 unidades, palmamos transform.position = new Vector3 (31.43, 2.248855, 140); // RESPAWN print ("YOU'VE BEEN RESPAWNED"); } } if (collision.gameObject.tag=="plataformas") { //Cada vez que tocamos el suelo grabamos nuestra última posición lastY = transform.position.y; hFall = firstY - lastY; if (hFall > 2){ // Si caemos de una altura de más de 2 unidades nuestra salud disminuirá 5 puntos salud -= 5; //NO FUNCIONA BIEN POR LAS FÍSICAS DE UNITY print (salud); } } } function OnTriggerEnter (collider:Collider) { // COLISIONES CON ITEMS NORMALES E ITEMS DE TIEMPO LIMITADO if (collider.gameObject.tag=="cubo-tamaño") { //Al recoger este item aumentamos nuestro tamaño 0,5 unidades //print ("Esto es un trigger"); contador_switch = true; transform.localScale += new Vector3(1.5F, 1.5, 1.5); Destroy(collider.gameObject); } if (collider.gameObject.tag=="cubo-velocidad") { //Al recoger este item multiplicamos la velocidad X3 contador_switch = true; scriptPersonaje = GetComponent (UnityStandardAssets.Characters.ThirdPerson.ThirdPersonCharacter); scriptPersonaje.m_MoveSpeedMultiplier = 3; Destroy(collider.gameObject); } if (collider.gameObject.tag=="Item") { print ("Estoy recogiendo mi Item"); //Destroy(collider.gameObject); //print ("You spent " + Time.time + " seconds to finish this level"); // La diferència d'un comptador a l'altre és mínima print ("Has tardado " + reloj + " segundos en hacer el recorrido"); print ("YOU'VE BEEN RESPAWNED"); tiempoinvertido = reloj; // Igualamos el valor del reloj al tiempoinvertido //print (tiempoinvertido); /* EL PROBLEMA ESTÁ POR AQUÍ (CREO). ENTIENDO QUE, SEGÚN LO QUE TENGO ESCRITO, LA VARIABLE "record" SIEMPRE SERÁ IGUAL A LA VARIABLE "tiempoinvertido" Y AL RELOJ. LA COSA ESTÁ EN QUE NO SÉ CÓMO HACERLO PARA DISTINGUIR ENTRE "record" Y "tiempoinvertido" Y QUE FUNCIONE COMO YO QUIERO */ record = reloj; if(record < tiempoinvertido){ print("NUEVO RECORD " + record); } reloj = ; transform.position = new Vector3 (31.43, 2.248855, 140); } } function OnCollisionExit (collisionInfo : Collision) { //COLISIONES DE CONTROL CUANDO DEJAMOS DE TOCAR EL SUELO if (collisionInfo.gameObject.tag=="suelo") { //Cuando saltamos no estamos en el suelo, por lo tanto OnGround = false // print ("Estoy en el suelo"); onGround = false; firstY = transform.position.y; } if (collisionInfo.gameObject.tag=="plataformas") { //Cuando saltamos no estamos en el suelo, por lo tanto OnGround = false onGround = false; firstY = transform.position.y; } } Saludos y muchas gracias de antemano
  7. Hola a tod@s, Estoy aprendiendo a lidiar con Unity bajo JavaScript y me cuesta un poco conseguir que mi proyecto se comporte como necesito. Me gustaría que mi personaje aumente de tamaño al colisionar con un objeto y, al colisionar con otro que aumente la velocidad durante un periodo de tiempo limitado. Lo del tamaño ya lo tengo pero, por desconocimiento, no consigo dar con la sentencia adecuada para conseguir aumentar la velocidad durante, pongamos, 10 segundos. Mi personaje se mueve bajo los Scripts de control en tercera persona del Asset Store ( que están en C# y que no domino en absoluto) y mi Script de colisiones es en JavaScript que conozco un poco más pero tampoco demasiado ya que estoy estudiándolo por mi cuenta y, como aquel que dice, acabo de empezar. Os paso el Script que tengo a ver si me podéis echar un cable: #pragma strict function Start () { } function Update () { } function OnCollisionEnter(collision: Collision) { // Podría ser también: // function OnCollisionEnter (hit:Collision){ if (collision.gameObject.tag== "cubo") { // if (hit.gameObject.tag== "cubo") { print ("Estoy Chocando Con El Cubo"); // print ("Estoy Chocando Con El Cubo"); } // } } function OnTriggerEnter (collider:Collider) { if (collider.gameObject.tag=="cubo-tamaño") { //print ("Esto es un trigger"); transform.localScale += new Vector3(1.5F, 1.5, 1.5); Destroy(collider.gameObject); } /* Esta es la parte que no consigo sacar. Sé que está mal, pero no sé por qué ni cómo hacerlo para que funcione como yo quiero ya que mis conocimientos son algo limitados. Entiendo que, si para cambiar el tamaño de mi personaje uso la sentencia "transform.localScale" quizá para cambiar la velocidad podría ser "transform.Translate", pero seguramente me equivoco y es por eso que os pido ayuda. */ if (collider.gameObject.tag=="cubo-velocidad") { transform.Translate += (new Vector3.forward *Time.deltaTime); Destroy(collider.gameObject); } } Esto es lo que he hecho para el tamaño y la velocidad y, a riesgo de repetirme, la sentencia del "transform.Translate" la he hecho sin saber qué es lo que estoy haciendo... Saludos y Muchas gracias de antemano.
  8. Hola a todos, me llamo Javi y estoy teniendo un pequeño problema con un script, concretamente con un if, adjunto una imagen. Probablemente sea uno de mis grandes fallos tontos, pero ahí mismo lo teneis. (inserto también el script) var curHealth : int = 100; var maxHealth : int = 100; var healthtext : GUIText; var regenActive; var isNotDead=true; function Update () { healthtext.text = curHealth + "%"; if(curHealth < ) { curHealth = ; } if(curHealth > 100) { curHealth = 100; } if(Input.GetKeyDown("e")) { curHealth -= 10; } } function OnTriggerEnter(other : Collider){ if (other.tag == "DeadZone"){ curHealth -= 500; isNotDead= false;} if (curHealth < 100 || (other.tag == "PickHealth")){ curHealth += 50;} if (other.tag == "Fire"){ curHealth -= 10;} } function Start () { if isNotDead=false; { Destroy(gameObject); } }
  9. Buenas!! Estoy iniciándome en JavaScript con Unity 3D Estoy haciendo un proyecto en el cual tengo un coche que el usuario únicamente debe poder controlar los los giros del coche. He encontrado este código por Internet para que el coche siempre vaya hacia adelante, pero cuando el coche esta mirando en el eje Y sigue avanzando hacia a pesar de tener un Rigidbody. Estoy totalmente en blanco a ver si hay alguien que pueda ayudar a resolverme el problema! Muchas gracias!!
  10. Hola comunidad! Soy nuevo aquí tengo una interrogante acerca de como comunicar una app desarrollada en Unity3D con una app en Android.Por ejemplo en el pantallazo que adjunto, muevo el cubo sobre uno de sus ejes (usando un evento touch), el valor de la rotacion se muestra arriba (angulo = 33) ... Lo que he logrado hacer es embeber esa app hecha en Unity dentro de una app Android, pero lo que necesito ahora es poder usar ese valor 33 en Android (Algo como pasar datos desde Unity a Android).Espero alguien pueda ayudarme.  Gracias!
  11. Hola,hoy se me ha presentado una pequeña dificultad que me está sacando de mis casillas. La cuestión es que he hecho un vehículo con un arma encima,solo me queda programar el hecho de que la metralleta se quede quieta en el centro del vehículo y rote junto con la cámara.He probado con las scripts por defecto,funciona...pero a medias,es decir el modelado se me deforma.He intentado encontrar información sobre cómo al mover el ratón,se ejecute la rotacion.Muchas gracias.
  12. Hola,antes de nada he de agradecer toda esa ayuda por parte de la comunidad,gracias. Ahora a lo importante...Estoy intentando que el jugador evada los ataques del enemigo de una forma muy básica,esencialmente tengo un script en el cube que hace daño al jugador con un temporizador que cuando lo pulsas se queda desactivado el box collider durante x tiempo,pues por lo que vi desactivar el box collider no funciona es cierto?
  13. Pues eso que necesito acceder desde un script JS que es el lenguaje que mas o menos domino a un parametro de un script C# que descargue de internet. Se que C# es muy parecido pero esk no lo domino del todo y ademas el script JS ya tiene su buen tamaño y no me planteo pasarlo a C#. Lo malo es que con el clasico GetComponent(NombreScript) no puedo me dice que no lo encuaentra, alguno sabe alguna solucion??
×
×
  • Create New...