Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

hola, me pueden ayudar? Aprendiendo a hacer un FPS

Iniciado por zopas tv, Septiembre 10, 2017, 03:58:13 PM

Tema anterior - Siguiente tema
Septiembre 10, 2017, 03:58:13 PM Ultima modificación: Septiembre 12, 2017, 09:25:12 AM por pioj
Muy buenas, estoy empezando con esto de unity y quiero crear un fps sencillo, pero la verdad es que tengo muchos problemas y quiero que, si pueden, me los resuelvan. mi problema es que no puedo usar ningun script de disparo y recarga porque no funcionan. me podrian ayudar en eso?? gracias

Cita de: zopas tv date=1505051893Muy buenas, estoy empezando con esto de unity y quiero crear un fps sencillo, pero la verdad es que tengo muchos problemas y quiero que, si pueden, me los resuelvan. mi problema es que no puedo usar ningun script de disparo y recarga porque no funcionan. me podrian ayudar en eso?? gracias
   


JEsus santo!... no! , no otra vez. nooo!! dejen de pedir scripts de disparo, aprendan a programar! y si no saben programar dediquense a lo artistico, aca no hay punto medio, todo sale del esfuerzo, si estas esperando cosas como las que decis "es que tengo muchos problemas y quiero que, si pueden, me los resuelvan " ya arrancaste mal mal mal, tene cuidado, aca te van a hacer terrible bullying (probablemente yo empiece, luego Arthure jaja ...). Mi recomendacion, siempre que hagas un Topic consultá cosas puntuales, demostra que trabajaste y no venis a usar le trabajo de los demas, si no las sabes trata de no poner minimamente "que, si pueden, me los resuelvan" se mas vivo, por que queda bastante feo. Mentí, deci "Estuve hace meses tratando de hacer un script de disparo, podrian orientarme tan amablemente en como se realiza uno, es que no entiendo la mecanica principal..." eso se llama chamuyo (y bueno no conocias google.com por lo visto), el que te responde te termina subiendo el codigo o la teoria por lo menos (mejor aún).
 
 
 
Ah y me olvidaba...bienvenido !

Septiembre 10, 2017, 11:34:05 PM #2 Ultima modificación: Septiembre 10, 2017, 11:39:13 PM por Braltor
@lightbug tienes que superarlo o terminaras en el manicomio, al final la gente se cansa de recomendarle a otros el buscador y que hagan el minimo esfuerzo, segurian viniendo y viniendo como hordas de zombis...

Cita de: lightbug date=1505071034JEsus santo!... no! , no otra vez. nooo!! dejen de pedir scripts de disparo, aprendan a programar! y si no saben programar dediquense a lo artistico, aca no hay punto medio, todo sale del esfuerzo, si estas esperando cosas como las que decis "es que tengo muchos problemas y quiero que, si pueden, me los resuelvan " ya arrancaste mal mal mal, tene cuidado, aca te van a hacer terrible bullying (probablemente yo empiece, luego Arthure jaja ...). Mi recomendacion, siempre que hagas un Topic consultá cosas puntuales, demostra que trabajaste y no venis a usar le trabajo de los demas, si no las sabes trata de no poner minimamente "que, si pueden, me los resuelvan" se mas vivo, por que queda bastante feo. Mentí, deci "Estuve hace meses tratando de hacer un script de disparo, podrian orientarme tan amablemente en como se realiza uno, es que no entiendo la mecanica principal..." eso se llama chamuyo (y bueno no conocias google.com por lo visto), el que te responde te termina subiendo el codigo o la teoria por lo menos (mejor aún).
   
   
       
   
   
      Ah y me olvidaba...bienvenido !
   


Te aconsejo hacer una respuesta base, donde solo tengas que cambiar el nombre, luego copy y paste. Es que van a seguir viniendo 

Cita de: Braltor date=1505079245@lightbug tienes que superarlo o terminaras en el manicomio, al final la gente se cansa de recomendarle a otros el buscador y que hagan el minimo esfuerzo, segurian viniendo y viniendo como hordas de zombis...
   


Si, la verdad tenes toda la razon.
 
Cita de: leocub58 date=1505079495Te aconsejo hacer una respuesta base, donde solo tengas que cambiar el nombre, luego copy y paste. Es que van a seguir viniendo 


Jaja el "default template", ahi lo guardo en un bloc de notas

Jajaja de que he podido empezar mal, pero la verdad es que estoy empezando a programar y no se demasiado del tema, me podrían ayudar a aprender por lo menos??

Cita de: zopas tv date=1505111705Jajaja de que he podido empezar mal, pero la verdad es que estoy empezando a programar y no se demasiado del tema, me podrían ayudar a aprender por lo menos??
   


Claro! Aquí tienes: https://unity3d.com/es/learn/tutorials
 
Dedica unas semanas a hacerlos todos empezando por el primero, y una vez hechos ya tendrás la solución a tu problema.

Muchas gracias, es que estoy teniendo muchísimos problemas y vosotros me estáis ayudando a seguir para alante!! Muchas gracias

Tal cual el mejor lugar es el que te puso @TheBullet, y si de ahi sumas algo basico de programacion orientada a objectos de C++/C#/JS o lo que sea, mas el manual de Unity (las referencias son mas tecnicas) sos un fucking super mega Dios.
 
Aca el manual:
 
https://docs.unity3d.com/es/current/Manual/index.html
 
 


jejeje, por algun lado tienen que empezar los novatos...
 
a ver. . . voy a ir por partes, y haciendolo a lo sencillo
 
para disparar yo hago un script "proyectil" con variables tipo float de vida(tiempo que vive el proyectil) de velocidad(velocidad a la que viaja el proyectil) y de daño(el daño que produce)
 
si me harian falta otras variables pues se añaden (radio, porcentaje de acierto, rebote on/off, ...)
 
a tu objeto(modelo 3d) de bala, proyectil, bolaDeFuego, plasma ionizado... o lo que sea le añades el script "proyectil", el objeto3d no deberia tener "collider" ni "phisics" ni nada
 
creas un prefab con el
 
cada vez que el "player" o un personaje dispare, en el script que controle a ese personaje, habria una linea de codigo que instanciaria(crearia un clon) del prefab "proyectil", lo colocaria en la posicion y orientacion adecuadas, y podrias cambiar sus valores de velocidad, daño....
 

GameObject nuevoProyectil = Instantiate(proyectil, posicion, rotacion);
nuevoProyectil.GetComponent<proyectil>().velocidad = 20.0f;

 
la rotacion seguramente sera la misma que la de la camara(Camera.main.transform.rotation)...
 
bien,ahora, para que el proyectil "viaje" solo hace falta una linea en void Update del script "proyectil"
 

transform.position += transform.forward * velocidad * Time.deltaTime;
//traduccion(la com***dora oye esto)
//a la posicion actual añadele en la direccion hacia el frente(suyo propio) la distancia(la velocidad multiplicada por el tiempo)

 
con lo cual el proyectil avanzaria hacia donde este orientado, y cada segundo recorreria una distancia equivalente a la velocidad, si la velocidad es 20 el proyectil recorre 20 unidades de distancia cada segundo
 
pero el objeto asi viajaria por siempre y no chocaria con nada(atravesaria todo)
 
primero lo del tiempo de vida, cuando instancies el proyectil pe puedes dar un valor de "vida" que es el tiempo(en segundos) que "vivira", 
 
en el script "proyectil" en Update 
 

vida -= Time.timeDelta;
//restar el tiempo transcurrido
if (vida < 0) {
   Destroy(this.gameObject);
}
si la vida es menor de cero detruir el proyectil

 
 
 
para que el proyectil compruebe si colisiona con algo yo lo hago con raycast(una linea) o spherecast(una linea con un volumen R, el volumen que ocuparia una esfera al "viajar") 
 
spherecast funcion asi, te pide: posicion inicial del "rayo/proyectil"(vector3), radio dela esfera/proyectil, direccion en la que se mueve(vector3), una variable de "salida"(out hit) en la que se guardara la informacion del inpacto/choque, y la distancia recorrida por el proyectil, 
 
y en esa variable de salida (hit) estan los datos de como y donde y contra que ha chocado
 
entonces, en vez del la sencilla linea de viajar que he puesto antes, la cosa deverias ser asi ("proyectil", void update)
 

void Update() {
RaycastHit hit;
if (Phisics.SphereCast(transform.position, radio, transform.forward, out hit, velocidad * Time.deltaTime)) {
   //choca con algo
   if (hit.collider.name = "enemigo") {
   //si el objeto golpeado se llama enemigo
      hit.gameObject.GetComponent<enemy>().makeDamage(daño);
        hacer daño al enemigo (en este ejemplo el script enemigo debe tener un "public void makeDamage()"
   }
   Detroy(this.gameObject);
        //destruir el proyectil
} else {
   //si no colision con nada
        transform.position += transform.forward * velocidad * Time.deltaTime;
        //mover el proyectil ("viajar")
}
//y aqui comprobamos el tiempo(vida del proyectil)
vida -= Time.deltaTime;
if (vida < 0) {
   Destroy(this.gameObject);
}
             
//y se acabo el void update
}

 
con esto si choca se destruye (si le da a un enemy le hace daño)y si no choca con nada sigue viajando hasta que se acabe el tiempo (vida) del proyectil
 
espero haber servido de ayuda, porlomenos para que te hagas una idea de como funciona un proyectil (segun yo)
 
 

ah, bueno, y si quieres que se puedan usar multiples armas y equipo, es mas complicado, no el script "proyectil" que podria seguir siendo igual, pero el script de player, de los personajes y de los enemigos si seria mas complejo, habria que comprobar que arma llevas equipada, comprobar si hay municion....
 
habria una cadencia de tiro(disparos por minuto) para cada arma y un tiempo de recarga tambien diferente, habria diferentes animaciones de recarga para cada arma....
 
y asi te irian saliendo mas y mas "problemillas"
 
para la cadencia de tiro podrias hacer algo como lo de medir el tiempo(vida) del proyectil, pero alrreves... digamos que hay una variable que cada vez que dispares se pone a 0.25f (segundos), cada "frame" le restas el tiempo transcurrido (Time.deltaTime) y hasta que no sea menor que cero no puedes volver a disparar.... para el tiempo de recarga lo mismo...
 
nose, faltan un monton de cosas por explicar, pero espero que te valga como toma de contato

hola de nuevo jajaja miren tengo un personaje creado, pero no tengo ningun avatar para este personaje, me podrian ayudar(la idea es que el player tenga su propio avatar) Gracias
 
 

que preguntas mas poco especificas haces...
 
 

mira, tengo un jugador creado, pero no tiene third person controller ni nada, la idea es que se pueda mover, pero no tiene asignado un avatar en el apartado avatar del animator, como creo un avatar para ese apartado??

Etiquetas: