Jump to content

Search the Community

Showing results for tags 'unity 5'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

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

Blogs

There are no results to display.

There are no results to display.


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 18 results

  1. Hola muy buenas tengo una dudad como puedo hacer para detectar si preciosa cualquier tecla del teclado, se como detectar cuando preciona una tecla en especifico, pero yo quiero detectar cuando preciona cualquier tecla. Gracias por leer, espero tu respuesta. Saludos
  2. Hoy vamos a preparar desde cero todos las funcionalidades básicas del mítico juego Arkanoid. Diseñaremos los objetos y asignaremos scripts y funciones para el correcto funcionamiento. Movimiento de objetos con las flechas, creación de bloques por instanciado de Prefabs, arrays de materiales, funciones Clamp y Random, colisiones, destrucción de objetos, control de los puntos, llamadas entre Scripts... Un video largo y detallado a partir del cual podréis crear vuestra propia versión del juego Arkanoid. ¡No os lo perdáis!¡Por favor suscríbanse al canal y dejen un comentario!
  3. Hola muy buenas a todos, les vengo ah hacer una consulta como puedo unir 2 objectos diferentes que contienen rigidbody, para que lo siga al otro, para ser mas especifico el trailer siga el camión. Si alguien sabe como podría hacerlo y me lo dice se lo agradeceria bastante. Gracias por leer
  4. Crear Plugins/Mods/Extensiones para tus juego de Unity Hola a todos, Quería compartir con todos la forma de crear plugins para sus juegos una vez ya acabados. No me liare mucho ya que es algo complejo y necesitas tiempo. Lo primero tienen que saber que esto no es añadir el sistema y ale! magia! ya pueden crear cualquier plugin..., Ustedes tienen que crear despues una Api con acceso a vuestro juego para que se pueda expandir. (Este sistema solo lo he probado en windows, esta claro que un *.dll no funcionara en otro sistema), También decir que no explicare que son los delegados ni ninguna clase que utilize, para aprender a programar ya hay otros tutoriales. Introducción: Haré una pequeña introducción de cómo funciona para comprender lo que hay que hacer. Crearemos un .dll que se incluirá dentro de unity antes de compilar el juego. (Sera el que cargue los demás .dll, Este será nuestra API también) Añadiremos un script para que llamen a ese dll anterior en el juego. Haremos una pequeña compilación de una escena para que veamos como funciona. Por último crearemos un plugin para añadir al juego. Creando la API y el cargador de plugins: Usaremos Visual Studio (La versión no importa yo uso 2015), con el lenguaje de programación C#. Creamos un nuevo proyecto con esta configuracion, ¡Recordar que los nombres son como vosotros querais, los mios seran orientativos, el nombre de los namespaces y los class y etc...! Tambien decir que todas las explicaciones estaran por comentarios en codigo (asi no tengo que estar cambiando ventana entre esto y los programas) Añadimos la referencia a la libreria de UnityEngine Para añadir una referencia Menu Visual Studio->Project->Add reference... La ruta de UnityEngine.dll: %Unity_Install_Path%\Editor\Data\Managed\UnityEngine.dll Vale Ahora crearemos Otra clase: Llamada Loader dentro de un nombre de espacios llamado APILoader using System; using System.Reflection; namespace APILoader { public static class Loader { } } Esta clase sera para cargar los scripts, luego haremos la clase API, con funciones publicas para llamarlas desde los plugins creados. using System; using System.Reflection; using System.IO; using System.Collections.Generic; namespace APILoader { /*Dentro de cada plugin podra habra dos funciones obligatorias que seran llamadas al inicio del juego y en cada frame * igual que haces en unity en void Start y void Update, nosotros haremos lo mismo con nuestros plugins */ public delegate void FunctionAtStart();//Creamos los delegados para añadir esas funciones y llamarlas cuando queramos. public delegate void FunctionAtUpdate(); public static class Loader { public static FunctionAtStart callAtStart;//Instanciamos los delegados public static FunctionAtUpdate callAtUpdate; //Ruta de la carpeta donde guardaremos los plugins en este caso es: donde se ejecute el programa + \Plugins\ public static string _PATH = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Plugins\\"; public static void LoadExternalAssembled() { foreach (var eAssemb in Directory.GetFiles(_PATH)) //Hacemos un bucle para cargar todos los plugins de la carpeta { Assembly _current = Assembly.LoadFile(eAssemb);//Cargamos el plugin Type _typeof = _current.GetType("Plugin.External"); //Donde Plugin es el nombre el namespace del plugin y //external es la clase del plugin que cargaremos nosotros _typeof.GetMethod("load").Invoke(Activator.CreateInstance(_typeof), null); //Cargaremos la funcion load dentro del plugin, para que este se añada a los delegados y asi se ejecute segun corresponda } } } } Crearemos ahora otra clase llamada Functions dentro de un nombre de espacios llamado API using System; using UnityEngine; namespace API { class Functions { } } Aqui crearemos las funciones que el plugin podra usar. Yo haré solo unas pocas para que veais el funcionamiento. using System; using System.Collections.Generic; using UnityEngine; namespace API { public static class Functions { public static List<GameObject> reference; //Imaginaros que quereis hacer que el jugador tenga funciones en api //Lo añadiriamos desde unity aqui, para que cualquier plugin pueda hacerle //referencia. (Hare una funcion como ejemplo) public static GameObject getReference(string name) //retornara el gameobject segun un nombre si existe en la lista. { return reference.Find(g => g.name == name); } public static void changeColorOfMaterial(GameObject go, Color newColor) { go.GetComponent<Renderer>().material.color = newColor; //Esta funcion la usaremos para buscar un objeto en la lista "reference" y cambiarle el color. } public static void IntegerPlusPlus(ref int i) { i++; //Esta funcion incrementa 1 a la variable que le pasemos, la llamaremos dentro del update del plugin para //que veamos como se ejecuta. } public static string sayHelloWord() { return @"Hello World from APi"; //Esta es sencilla, solo retorna ese string. } } } Como veis es sencillo, Ya tenemos creado el Loader y la API. ¡Facíl! Preparando Unity: Ahora en Unity crearemos una carpeta llamada Plugins No nos confundamos ahora, esta carpeta sera para los plugins de Unity, como el ultimo que hemos creado, pero nosotros queremos hacer Plugins para nuestro juego y crearlos despues de compilar. Desde Visual Stuido compilaremos el proyecto antes creado, y lo arrastraremos a la carpeta que acabamos de crear, os tiene que quedar asi. Ese archivo es el .dll que generamos con Visual Studio. Ahora crearemos el script que cargar y ejecutara nuestros plugins. yo lo llamare pluginsLoader Aqui el codigo. using UnityEngine; using APILoader; //AQUI ESTOY LLAMANDO AL DLL QUE HEMOS CREADO!!!!!!!!!!!!!!!!!!!!!!!!!!!!! public class pluginsLoader : MonoBehaviour { void Awake () { Loader.LoadExternalAssembled(); //Llamamos a nuestra funcion creada dentro del dll para que cargue los plugins. } void Start () { Loader.callAtStart(); //Aqui estamos llamando a las funciones de los plugins start. } void Update () { Loader.callAtUpdate(); //Aqui llamamos a las funciones de los plugins update. } } Y no tiene mas misterio!, Esto lo añadimos a un object de la escena y listo. Ahora creamos Un objeto, en mi caso sera un cubo, para añadirlo a los objetos de referencia que pueden ser llamados desde la API (tendremos que modificar este ultimo script) using UnityEngine; using System.Collections.Generic; using APILoader; //AQUI ESTOY LLAMANDO AL DLL QUE HEMOS CREADO!!!!!!!!!!!!!!!!!!!!!!!!!!!!! using API; public class pluginsLoader : MonoBehaviour { public GameObject[] prefabsToReference; void Awake () { Loader.LoadExternalAssembled(); //Llamamos a nuestra funcion creada dentro del dll para que cargue los plugins. Functions.reference = new List<GameObject>(); Functions.reference.AddRange(prefabsToReference); } void Start () { Loader.callAtStart(); //Aqui estamos llamando a las funciones de los plugins start. } void Update () { Loader.callAtUpdate(); //Aqui llamamos a las funciones de los plugins update. } } Asi quedaria el script! Ahora creamos nuestro cubo y lo añadimos al Array de GameObjects que hemos creado. como el cubo se llama cubito, desde los plugins habra que buscar "cubito" vale, Por la parte de Unity ya esta!, Ahora crearemos nuestro plugin. Primero compilaremos este proyecto. Por un momento pense que no compilaria... ;) Creando un Plugin Para el juego: Lo primero que hay que hacer es: crear una carpeta dentro de: executable_Data\Managed\ llamada Plugins (para incluir nuestros plugins), executable_Data por que yo lo llame asi, cambiar segun el nombre que pusieron. Asi deberia quedar: Ahora volveremos a Visual Studio para hacer nuestro plugin. Crearemos un nuevo Proyecto, igual que el anterior pero con otro nombre Ahora pasare el codigo comentado para que vean como es, y FIN! (Veo que en vez de First puse Firs, menudo programador...) Recordar tambien añadir al proyecto de plugin la referencia de UnityEngine, y del DLL que habiamos creado llamado API! Aqui el codigo de nuestro plugin, como vereis este llama a las funciones de la API que habiamos creado. using API; using APILoader; using UnityEngine; namespace Plugin //Si recuerdan en el primer DLL para unity, dijimos que el nombre de espacios seria Plugin, y la clase External {//Si ustedes quieren cambiar estos datos, para que el nombre de espacios sea otro, tambien tienen que cambiarlo en la DLL de API public class External { static int i; public static void load()//Esta funcion es llamada desde el juego. { APILoader.Loader.callAtStart += start; //Y aqui añadimos las funciones a los delegados de nuestra api para que puedan ser APILoader.Loader.callAtUpdate += update;// llamadas a su momento. } static void start()//PONEMOS EN STATIC!! { API.Functions.changeColorOfMaterial(API.Functions.getReference("cubito"), Color.red); //Al comienzo de la escena, cambiara el color de cubito a rojo, si recordais, añadimos cubito a la referencia de objetos de la api } static void update() { i++; if(i>100)//Pasados 100 frames el cubo sera azul! API.Functions.changeColorOfMaterial(API.Functions.getReference("cubito"), Color.blue); } } } Una vez creado el DLL (compliado el plugin) lo añadiremos a la carpeta Plugins que hemos creado anteriormente. Subire el Proyecto ya compilado para que veais que funciona -> https://mega.nz/#!kBYEnBJb -Creo que soy el unico que no utiliza una pagina de publicidad en un link ;) Si os da algun error, antes de preguntarme aqui en el post, podeis mirar si es esto: Seleccion de diferente Framework en los DLL. Error en algun nombre. Error de seleccion de plataforma, en un sitio poneis para x64 en otro para x32 etc... Un Saludo a todos y espero que os sirva de ayuda!
  5. Hola a todos! La duda que traigo el día de hoy XD es una basada en la script que utilizo para mover a mi enemigo, lo hago mediante el uso del character controller. La cosa es que (fuera del tema) no se si es debido a la animación que interfiere con el character o con el capsule collider que le puse a mi enemigo que cuando le doy a Play, este reproduce todo perfecto pero se "teletransporta" un par de centímetros(o la unidad con que se maneje Unity : p) hacia arriba en el eje Y. Por lo que para solucionarlo, le puse un rigidbody(va ya lo tenía) y le "congelé" el movimiento en el eje Y con Contrains, y me funcionó bien el tema es que mi mapa tiene caminos con subidas y bajadas y al subir una colina o algo alto el enemigo lo hace bien pero al tener que "bajar" este se sigue moviendo por la altura que alcanzó en la colina(debido a lo del Contrains). Mi duda es como evitar el problema de la "teletransportación" para no tener que usar el freeze position en el eje Y, y así poder evitar este problema de las alturas. Acá les dejo la script que estoy haciendo: using UnityEngine; using System.Collections; [RequireComponent(typeof(Rigidbody))] [RequireComponent(typeof(CapsuleCollider))] [RequireComponent(typeof(CharacterController))] public class ControladorEnemigo : MonoBehaviour { public Animator ani; public CharacterController Char; public Rigidbody RB; public float gravity; public Transform Jugador; public float MinCercania, MaxCercania, velocidad, Dano; public bool Perseguir = false; // Use this for initialization void Start () { ani = GetComponent<Animator>(); Char = GetComponent<CharacterController>(); RB = GetComponent<Rigidbody>(); } // Update is called once per frame void Update () { float Distancia = Vector3.Distance(transform.position, Jack.position); if(Distancia < MaxCercania && Distancia > MinCercania){ Perseguir = true; }else{ if(Distancia <= MinCercania){ Perseguir = false; ani.SetBool("Detectado", false); ani.Play("AtaqueBase"); } } Vector3 rotacion = new Vector3(Jugador.position.x, transform.position.y, Jugador.position.z); if(Perseguir){ transform.LookAt(rotacion); ani.SetBool("Detectado", true); Char.Move(transform.forward * velocidad * Time.deltaTime); } if(Distancia <= MinCercania){ Perseguir = false; ani.SetBool("Detectado", false); ani.Play("AtaqueBase"); } } } Entre otras cosas también leí en la scripting reference de Unity, que el uso del character controller "anula" las físicas del gameobject que lo lleve por lo que también me surgieron dudas para usarlo como forma de movimiento(si alguien me puede explicar eso o darme otro método lo agradecería muchísimo). Y la última cosa con la que estoy luchando, es con un error que me sucede cuando mi enemigo persigue a mi Player(esto lo hace bien), el problema es que cuando está cerca(donde se reproduce la animación de ataque) este como que no se detiene y atraviesa al jugador y no se le despega de encima, pero en la script aclaré que cuando estuviera lo suficientemente cerca, reproduciera la animación de ataque,lo cual sí hace, y que se detenga(volviendo la variable "Perseguir" igual a false) pero no lo hace. Si me ayudan con estas dudas se los agradecería muchooo jajaja Gracias de antemano.
  6. Hola, quería ver si alguien me puede decir qué es mejor a la hora de hacer una script de detección(en este caso, para detectar al jugador) y de paso sacarme algunas dudas con respecto a las animaciones y movimiento. Las forma que uso es mediante un trigger(sphere collider), la cosa es que quizás hay un método mejor o más practico. Les dejo la script que hice: using UnityEngine; using System.Collections; public class ControladorEnemigo : MonoBehaviour { public enum Estado{ Idle, Corre, Ataca1, Ataca2, Baila, } public Estado EstadoActual; public Animator ani; public Rigidbody rb; public Transform Player; public float velocidad; public float Damage; public float MaxCercania; public bool Detectado; // Use this for initialization void Start () { Detectado = false; ani = GetComponent<Animator>(); rb = GetComponent<Rigidbody>(); EstadoActual = Estado.Idle; } // Update is called once per frame void Update () { float Distancia = Vector3.Distance(transform.position, Player.position); if(EstadoActual == Estado.Ataca1){ ani.Play("AtaqueBase"); } if(EstadoActual == Estado.Ataca2){ ani.Play("AtaqueMax"); } if(Detectado){ transform.LookAt(Player); if(Distancia < MaxCercania){ StartCoroutine(TiempoAtack()); } else{ if(Distancia > MaxCercania){ rb.AddForce(transform.forward * velocidad); ani.Play("Correr"); EstadoActual = Estado.Corre; } } } RaycastHit hit; if(Physics.Raycast(transform.position, transform.forward, out hit, 2)){ if (hit.collider.tag == "Jack"){ SaludyMana.Salud -= Damage * Time.deltaTime; } } } IEnumerator TiempoAtack () { EstadoActual = Estado.Ataca1; yield return new WaitForSeconds(3); EstadoActual = Estado.Ataca2; //yield return new WaitForSeconds(3); } void OnTriggerEnter(Collider other){ if(other.tag == "Jack"){ Detectado = true; } } /*void OnTriggerExit(Collider other){ if(other.tag == "Jack"){ Detectado = false; } }*/ } AVISO: lo de los estado los puse nada más que para ver como eran XD(lo ví en un video pero no es algo que use a futuro). Como ven es algo bastante simple pero bueno, ahora les digo mis otras dudas: Con respecto al daño, esta bien el uso de ray´s? Ya que no se si(al tener muchos enemigos en escena) me baje el rendimiento, porque leí que los ray´s estan constantemente haciendo cálculos(disculpen si dije cualquier cosa XD).¿Alguna idea para mejorar eso? ¿Hay alguna forma de utilizar los "WaitforSecond" sin el uso de corutinas?Ya que en la scripting reference de Unity(mi biblia durante todo esto jaja) muestra su uso con corutinas y como no conozco muy bien sobre ellas(osea ví videos y demás pero sigo sin entender su uso ) quizas me complique más adelante. ¿Ahora con respecto a el movimiento está bien el uso de AddForce? Y mi última duda y no jodo más, como pueden ver con las animaciones(Uso un controller que hice) pero no utilicé transiciones ya que no me gusta usar lo de los parámetros y eso, por eso, reproduzco los "States" con la variable "Play" del animator. La cosa es que Dispongo de dos ataques: el base(uno simple el cual repito un par de veces) y el Max(que quiero que lo haga por ejemplo, después de X "ataques base"). Lo que no sé como hacer, es obtener la información de cuántas veces se reprodujo la animación base(creo que se hace con una variable llamada "StateInfo" o algo así pero no se bien cómo implementarla) y cómo "pararla"(si es que se está reproduciendo) para que de paso a la animación Max. Ufff ajajaj, disculpen si escribí mucho pero quiero aprender bien esto que siempre me detiene a la hora de programar. De antemano gracias haaa y una cosa más jaajaj hay otra forma de que el enemigo "mire" al player que no sea LookAt? ya que cuando se acerca mucho(o salto muy cerca de él) todo el "cuerpo" se direcciona hacia el player y se pierde el realismo. Por eso si existe otra forma o alguna solución a este problema agradecería que me lo contaran. Ahora así chau XDD
  7. El tema de IA muchas veces parece algo complicado pero con Unity 5 podemos hacerlo de manera sencilla tan sencillo que lo haremos en 5 minutos ... Creamos un enemigo que persigue al personaje y esquiva objetos :
  8. Sencillo vídeo que explica como cambiar el Skybox en Unity 5. A todos nos paso (por lo menos a mi) que con esta nueva actualización no encontramos la forma de cambiar el Skybox.
  9. Porque me aparece esto al iniciar un juego?
  10. https://www.assetstore.unity3d.com/en/#!/content/37687 Hola a todos, para estas vacaciones se que muchos empezaran un nuevo proyecto o continuaran los que ya han empezado hace mucho, para todos los que han de tener problemas de rendimiento en sus juegos ofrezco esta solución Dynamic Occlusion es una herramienta que va mas allá que el uso de static batch, o static occlusion. Ademas que incluye muchos tipos de componentes a ser ocluidos como son trailRenderer, line Renderes, billboards incluye partículas, luces, sonidos y terrenos. controla la calidad del juego automáticamente para garantizar un buen desempeño y una experiencia suave para el usuario final. esta hecho para unity 4.5 free y pro o superior dc2851a2-3828-4b56-95dd-4684a10b6d48.xcf
  11. Hola gente de la comunidad.Este es mi primer post y quería preguntarles cómo mierd@ activar una animación mediante una script (obviamente : p). El tema es q quiero q al apreta x ejemplo la "r" reproduzca la animación "recargar" y así con las demas, pero el problema es q yo hago uso del animator para "relacionar" esta animaciones y al momento de crear la script probé con algunas como estas: #1 function Update () { if (Input.GetKeyDown(KeyCode.R)){ animation.Play("recargar"); también probé con animation.Crossfade("recargar");(o algo así XD) } } #2 var recargaanim : AnimationClip; function Update () { if (Input.GetKeyDown(KeyCode.R)){ GetComponent.<Animation>("recargar").Play; (este lo "actualizó" el propio unity) } } #3 y ultimo: var ani : Animator; function Start () { ani.enabled = false; } function Update () { if (Input.GetKeyDown(KeyCode.R)){ ani.enabled = true; } } porfavor si me puedenayudar con una script q funcione se los agradecería muchísimo (para UNITY 5) gracias.
  12. El caso es este, acabo de formatear el ordenador y al instalar unity, intento iniciarlo y nada mas abrir la ventana de unity me sale el mensaje "unity ha dejado de funcionar". Antes de formatear no tenia ningún problema, pero ahora con esto nisiquiera me sale un mensaje de que podría ser, simplemente eso xD Mi versión es la 5.0.2f3, por si sirve de algo. El profesor del modulo tampoco tiene ni fruta idea de por que es eso, y no soy el único con el problema. ¿Alguna sugerencia? Si alguien puede borrarme un tema de los duplicados lo agradeceria... me ha salido asi.
  13. Guest

    sistema de objetivos

    hola les quería preguntar si tienen un sistema de objetivos como "destruye las 4 torres y salva a la ciudad" y al destruir las 4 torres aparece una animación y después los creditos lo he visto en un vídeo le pregunte si podía hacer un tuto pero me dijo que iba a tardar mucho así que le pregunto a ustedes
  14. Hola comunidad! Antes que todo es mi primer Topic así que un saludo para todos. Bueno, mi problema es que quiero hacer interiores, pensé ocupar los Cubo que trae Unity por defecto para paredes temporales pero surgio un problema, a pesar de que es cerrado, la luz igual entra luz por los bordes, hice las paredes con blender para asegurarme que no quedara ninguna abertura y aun asi la luz sigue traspasando. Dejo unas capturas de evidencia Acá solo gire en Y la luz
  15. Hola muy buenas a tod@s! Soy nuevo en este forum y tengo un grave problema, me explico: estoy desarrollando un juego de aventuras en primera persona y el problema es que cuando salto delante de una montaña el personaje, en vez de caer se queda enganchado en la montaña, y si sigo saltando va escalando como si nada, vamos, como si fuera Spiderman. Yo pensaba que a lo mejor la malla del collider de la montaña no estuviera del todo correcta, pero he hecho pruebas con un cubo muy alto y lo he inclinado casi como una pared de recta y sigue pasando lo mismo!. Esto no pasaba en la anterior versión de Unity. Alguien sabe como arreglarlo o es que tengo que parametrizar algo que se me escapa. Gracias y salu2, jsptron
  16. Hola que tal, veran mi duda es la siguiente: Yo tengo pensado hacer un juego 3D utilizando a Slenderman y poniéndole el nombre "Slender Origins", obviamente usando scripts que yo haya programado y utilizando modelos 3D, musica y demas creados totalmente por mi... pero mi duda es si al hacerlo y ponerlo gratis en steam o vendiéndolo me puede caer el Copyright.. ya que slenderman es utilizado en "Slender The Arrival"... entonces es eso.. si yo uso a slenderman y uso en el nombre "Slender" me puede traer problemas legales?
  17. Hola amigos. Por un lado tengo una app realizada en Android Studio, por otro, tengo otra app realizada en Unity con Vuforia (Realidad Aumentada). Como puedo hacer para unir ambos proyectos o paquetes y que la app de Unity con Vuforia sea una parte de la app en Android Studio sin la necesidad de instalar ambas apps.
  18. Buenos dias. Estaba viendo un tutorial (de hecho logre hacerlo, no era dificil) sobre materiales en Unity 5. En el creaban un multimaterial que utilizaba una sola textura (2048x2048px) para un modelo. Lo que no me quedo claro es que al exportar la malla a unity, con el nuevo Standar shader crea un solo un material (lo cual es perfecto). Lo que quiero saber es que hace Unity con los demas materiales, si solo muestra uno. Que conste que no tengo ninguna queja, el modelo sale bien texturizado, lo que no se es si estan en segundo plano, si es mejor crear un solo material, no se si me entienden.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...