Jump to content

Igor

Registrados
  • Content Count

    783
  • Joined

  • Last visited

  • Days Won

    50

Igor last won the day on July 8

Igor had the most liked content!

Community Reputation

284 Excellent

4 Followers

About Igor

  • Rank
    Experto

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

1,524 profile views
  1. si, yo creo que con "onTriggerEnter" o con "onCollisionEnter" esta bien
  2. puedes usar tags.... y en la collision mirar que tag tiene el colisionado.... si un "noContagiado" se colisiona con un "contagiado" le cambias el tag a "contagiado" (al primero) o puedes hacerlo con layers...
  3. igual seria mehor que quitases lo de jump = true.... y en vez de esos sumar a tu fuerza de impulso hacia atras una fuerza hacia arriba
  4. el script parece correcto.... quizas la fuerzaSalto sea muy pequeña y no se note...
  5. Igor

    ¿Enviar juego?

    si ha tenido algun juego en su PC supongo que ya tendra instalado DirectX11 (o igual el 10 u otro mas antiguo) ....son unas librerias (dll) de microsoft que se utilizan principalmente para juegos 3d.
  6. hola se puede hacer de muchas maneras, esta es una: //esta funcion te devuelve un punto(vector3) dentro de un circulo (horizontal) //dalndole el centro del circulo=circlePos (vector3), y el radio del circulo=circleRad (float) Vector3 randomPointInsideCircle(Vector3 circlePos, float circleRad) { float ang = Random.Range(0f, 360f); //un angulo aleatorio entr 0 y 360 ang *= Mathf.Deg2Rad;// convertie el angulo en radianes (seno y coseno de unity funciona en radianes) Vertor3 pos = new Vector3(Mathf.Sin(ang), 0, mathf.Cos(ang));//crear un vector de la direccion del angulo float length = Random.Range(0f, circleRad); //un valor aleatorio entre cero y el radio del circulo pos *= length; //hacer que el vector mida esa longitud aleatoria pos += circlePos; //sumar la posicion del centro del circulo para que el punto este "alrededor" suya return pos; //devolver la posicion } esta es otra: Vector3 randomPointInsideCircle(Vector3 circlePos, float circleRad) { Vertor3 pos = new Vector3(Random.Range(-1f, 1f), 0, Random.Range(-1f, 1f)); //crear un vector aleatorio (-1/+1, 0, -1+1) pos.Normalize(); //hacer que el vector mida 1. (apunte hacia donde apunte) float length = Random.Range(0f, circleRad); //un valor aleatorio entre cero y el radio del circulo pos *= length; //hacer que el vector mida esa longitud aleatoria. (esto funciona porque antes media 1) pos += circlePos; //sumar la posicion del centro del circulo para que el punto este "alrededor" suya return pos; //devolver la posicion }
  7. el script "public static class globalVariables" no es "monoBehaviour".... no va en ningun gameObject.... no hay que añadirlo en ningun lado
  8. se puede hacer de muchas maneras puedes hacer una clase estatica public static class globalVariables { public static float playerLife = 100; } //luego puedes acceder a esa variable desde cualquier script //con: globalVariables.playerLife = 87;//porejemplo //esas variables de esa clase se mantendran entre escenas tambien puedes usar PlayerPrefs para guardar y cargar datos.... tambien puedes usar "dontDestroyOnLoad" para hacer que un GameObject se mantenga entre escenas
  9. al final esto se esta desviando demasiado.... para que el personaje no se mueva mientras dura el ataque puedes usar una variable float (llamarla por ejemplo: tiempoDeAtaque) cuando le des al boton de ataque puedes hacer que esa variable sea 0.8f o 1.4f o lo que dure el ataque.... y luego creas un "if" donde compruevas si esa variable es mayor que cero..... si SI es mayor que cero entonces haces que esa variable disminuya el tiempo que ha trascurrido (tiempoDeAtaque -= Time.deltaTime;) y en ese "if" pones despues un "else"... y entonces si la variable NO es mayor que cero pues AHI pones las lineas que hacen que tu personaje se mueva
  10. hola creo que lo que dice @nomoregames es que poner una enfermedad como excusa es algo contraproducente para ti mismo.... si te excusas diciendo que no puedes porque tienes tal enfermedad pues entonces tu mismo te estas poniendo trabas a ti mismo.... ...porque entonces, como tienes tal enfermedad, para que hacer nada.... con esto no quiero menospreciar tu enfermedad.... sino que quiero decir que no deves dejar que la enfermedad te diga lo que puedes y lo que no... que la enfermedad decida por ti... pero si incluso he visto en internet un señor sin brazos que toca la guitarra... sin brazos!!! y la toca mejor que yo!!!.. que me pegue tocando en un grupo (amateur) 8 años... bueno.... si te he parecido un "borde" lo siento... en esta pagina estamos para ayudar y para aprender. no dejes que te asustemos.... que aqui somos todos buena gente.... y no te des por vencido con la programacion.... cuesta.... pero cuando vas aprendiendo es muy satisfactorio... si sigues sin conseguir que funcione lo que quieres haces pues comentanos... y si tienes cualquier otra duda pues lo mismo.... habres un nuevo post en la categoria que corresponda, y estaremos encantados de contestar. PD. si vas a "postear" codigo hay arriba (del editor donde escribes el post) hay un simbolo asi "<>" con ese boton abres un panel de texto donde puedes pegar tu codigo.... y abajo de ese panel hay un menu desplegable donde puedes elegir "C" como lenguaje que estas usando.... y asi el codigo queda como el que te ha posteado @nomoregames un saludo y sigue dandole!
  11. hola mirate este post de hace unos dias: creo que igual puede arreglarse con lo que dice @lightbug de "root transform position (y)" y "Bake into pose"
  12. hola primero esta comprobando que "enSuelo" sea "true".... y dentro de esa comprobacion tienes otra donde compruebas que "enSuelo" sea false? creo que por ahi va el error.. creo que esa segunda comprobacion deveria ir fuera... y entonces deverias comprobar tambien en esa que se este pulsando el boton saltar.... y entomces dentro de esa comprobacion tendrias que aplicar lo mismo que dentro de la otra: fuerza de salto... sonido...
  13. hola @nomoregames creo que te estas liando.. el vector cross, el rosa, seria hacia el fondo... osea en tu ejemplo el vector "newUp" (el rojo) (que es la "normal" del suelo) apunta hacia el eje "Y" del mundo... el vector forward (del player) (el azul) apunta hacia en eje "-X" del mundo... pues esos dos vectores formarian un plano que seria el plano XY (un plano 2d) que es el "papel" donde has dibujado al muñeco (el circulo verde) pues si haces el vector.cross de esos dos vectores obtienes un vector perpendicular (tieso) a ese plano... osea que ese nuevo vector apuntaria hacia el fondo, hacia el eje "Z" ....luego utilizando ese vector que apunta hacia el fondo (eje Z) y usando el "newUp" (eje Y) formarias un plano que aqui no se ve... pero para que te imagines cual es ese plano se podria decir que si ese plano fuese una guillotina, una cuchilla gigante, ese plano "partiria" por la mitad el circulo verde dejando a un lado del plano la parte derecha del circulo y al otro lado la parte izquierda.... entonces al hacer el vector.cross de esos dos vectores que forman ese plano se obtendria un vector que apuntaria hacia la "izquierda" del circulo verde.... osea un vector perpendicular al plano/guillotina que partio al circulo verde por la mitad ...que casualmente es el mismo que el "forward" porque en este ejemplo el suelo es totalmente horizontal... cuando el suelo coje otras inclinaciones es cuando cambia... ya que la normal del suelo (vector newUp) no apuntara recta hacia arriba... sino que estara torcida a derecha o izquierda y entonces el plano guillotina estara tambien inclinado y entonces el vector perpendicula a ese plano apuntara mas hacia arriba o hacia abajo dependido de como este inclinado el plano/guillotina... y entonces luego con Quaternion.LookRotation(vectorHaciaAdelante, vectorHaciaArriba) lo que hacemos es que el personaje se coloque inclinado con la cabeza (up) hacia el vectorHaciaArriba, y mirando hacia el vectorHaciaAdelante en mi ejemplo de codigo pone: Quaternion.LookRotation(newForward, newUp) el "newUp" lo conociamos desde el principio, es la normal del suelo... y el newForward es el que hemos calculado... que sera como la liea azul de tu ejemplo pero apuntando inclinada mas hacia arriba o mas hacia abajo dependiendo de la inclinacion del suelo... posdata: como te decia en el primer post... si es un juego 2d no hace falta que calcules el vector "left" (con el primer vector.cross) porque siempre apuntara hacia el fondo (eje Z) ya que el personaje solo se mueve en el plano XY entonces en vez de calcular el vector "left" puedes poner que es "new vector3(0,0,1)"
  14. hola... he acabado de escribir lo de arriba... que lo habia dejado a medias te he explicado como hace mi codigo para rotar el objeto para que se oriente como el suelo. deverias usar transform.Rotate(x,y,z) ...ya que tu objeto no va a estar siempre horizontal.... Rotate() lo rota respecto a la rotacion que ya tenga
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...