Jump to content
Sign in to follow this  
Jhonatan00_00

ANSWERED Físicas con CharacterController

Recommended Posts

Buenas noches, después de haber programado todo el control de mi personaje con Rigidbody y darle vueltas y vueltas a muchos problemas causados por este motivo, como al tema de Physic Material (que hacian que el personaje no actuase bien al saltar contra una pared), etc, me doy cuenta de que para personajes, lo mejor no es usar Rigidbody si no CharacterController. He programado todo el movimiento del personaje con CharacterController y ahora mi personaje y el juego en general se mueve perfecto, pero ahora tengo otro problema y es que con CharacterController.Move no puedo empujar objetos porque no actúan las físicas.

Si muevo al personaje con transform.Translate las físicas funcionan perfectamente, pero no me funcionan las colisiones con las paredes y si uso CharacterController.Move me funcionan las colisiones contra las paredes pero no se mueven los objetos afectados por las físicas. He programado que se mueva con transform.Translate y para que no traspase las paredes al detectarlas la velocidad de avance sea cero, pero ya no tengo ese movimiento de deslizamiento que tiene el personaje cuando estamos empujando contra una pared, ademas de que no sube peldaños por ejemplo.

- ¿Como puedo usar CharacterController y a la vez tener Físicas empujar algún objeto?.

Share this post


Link to post
Share on other sites
4 minutes ago, Jhonatan00_00 said:

He programado que se mueva con transform.Translate

No está pensado para eso, le estás haciendo un mal terrible al pobre componente. Entiendo el truco, pero no te conviene usar algo así para esto.

5 minutes ago, Jhonatan00_00 said:

me doy cuenta de que para personajes, lo mejor no es usar Rigidbody si no CharacterController.

Hasta que te das cuenta de que el CC no lo podés rotar ... si querés siempre un personaje que tenga el Up = Vector3.up, estonces está bien.

6 minutes ago, Jhonatan00_00 said:

- ¿Como puedo usar CharacterController y a la vez tener Físicas empujar algún objeto?.

Primero lo básico, ir a la documentación:    

https://docs.unity3d.com/ScriptReference/CharacterController.html

Para el callback OnControllerColliderHit tenés un ejemplo que hace exactamente eso:

https://docs.unity3d.com/ScriptReference/CharacterController.OnControllerColliderHit.html

 

Y si nada te funciona, bueno, simplemente obtener del asset store el mejor character controller:

https://assetstore.unity.com/packages/tools/physics/character-controller-pro-159150

:10_wink:

  • Like 3

Share this post


Link to post
Share on other sites

No me gusta obtener recursos de Internet para nada, ni un script, ni texturas, ni modelados, ni animaciones, nada... Yo pienso que si quieres hacer un videojuego de verdad por lo menos tienes que hacerlo tu mismo, porque seguramente ese script del CharacterController que hayas descargado lo esté utilizando mucha mas gente, lo que va a hacer que tu juego sea un clon mas de otros tantos juegos mediocres que pululan por Internet.

La documentación la leo siempre y también veo tutoriales e intento solucionar el problema por mi mismo antes. Cuando pregunto algo aquí es bien porque el manual de Unity no se entiende en la mayoría de los casos o porque sea un error o algo que no puedo solucionar. Este tema por ejemplo aunque no sea un bug en si, es un fail por parte de los desarrolladores del engine, porque no me creo que hayan pensado en físicas realistas, iluminación realista, efectos realistas, su propio lenguaje de programación, animaciones con IK, etc, etc, etc y que no se hayan parado a pensar que igual necesitamos que un CharacterController, aunque el no use físicas, pueda chocar contra otro objeto que si las tiene y este se mueva...

Lo he conseguido "solucionar" y lo pongo entre comillas porque tengo que toquetear de aquí y de allí hasta que las físicas se comporten como quiero, porque aunque funcionan, los objetos al colisionar con el personaje se mueven con demasiada fuerza, pero lo que he tenido que hacer para arreglarlo es un follón; he creado un objeto vacío al cual le he aplicado un CapsuleCollider y un RigidBody, después he tenido que programar que ese objeto siga las coordenadas del personaje sin afectar a su comportamiento, por lo que he tenido que desactivar las colisiones entre el personaje y este collider del objeto y después ajustar el radio del collider del objeto con Rigidbody para que sea algo mayor que el del CharacterControler y así choque al acercarse a otro objeto.

No creo que me vaya a explotar el ordenador ni nada por el estilo por hacer esto y funciona, así que creo que es la solución... Si a alguien se le ocurre otra mejor que lo diga.

Saludos.

Share this post


Link to post
Share on other sites

No pasa nada por buscar recursos en internet. Al final estás haciendo lo mismo accediendo a este foro y preguntando. Para poder evolucionar primero necesitas saber qué es lo que hay y cómo está hecho para mejorarlo. Aprender cómo está hecho, no utilizarlo sin saber cómo funciona solamente y modificarlo con conocimiento de causa. Peor lo teníamos en los 80's y 90's  sin internet y solamente con grupos, revistas o cursos especializados. La mayor parte del tiempo a solas.

Cómo decía un profesor mío de Historia, la única diferencia entre un romano y nosotros es el acceso a los conocimientos acumulados por otros. Si tienes un recurso al alcance no lo desaproveches. Modo metafísico Off.

  • Like 1

Share this post


Link to post
Share on other sites

Cuando entramos a un foro a preguntar como hacer algo o como solucionar un problema lo que estamos haciendo es aprender, por ejemplo aprender que en C# un objeto se mueve con la instrucción transform.Translate, etc... pero no entramos a que nos programen un script completo y aplicarlo a nuestro objeto como creen muchos que es esto. Por eso mismo le dices a cualquiera que estas realizando un videojuego y te tratan como si fueses un niño de cinco años cogiendo script de Internet.

Para hacer un videojuego profesional hay que aprender y que programarlo todo desde cero viendo lo que funciona y lo que no y a veces funcionan cosas que a nadie se le habían ocurrido. Además, cada persona tiene una forma de entender la programación y para realizar lo mismo programan cosas completamente diferentes, por lo que prefiero programar mis propios script desde cero para entenderlos, porque el funcionamiento que tienen es de acuerdo a mi lógica y se para que está todo. Después veo como ha programado otra persona algo que ya he hecho yo en mi juego y no entiendo nada. :4_joy:

Tengo una duda y es que este objeto que he creado con RigidBody que sigue la posición del personaje lo hace con Transform.position y aunque funcionan las físicas creo que debería de estar usando alguna función de las que ofrece Unity para dar movimiento a las físicas como RigidBody.AddForce, ¿con que seria mejor mover el RigidBody para que siguiese al personaje?, ¿con velocity por ejemplo?.

 

Share this post


Link to post
Share on other sites
7 hours ago, Jhonatan00_00 said:

No me gusta obtener recursos de Internet para nada, ni un script, ni texturas, ni modelados, ni animaciones, nada... Yo pienso que si quieres hacer un videojuego de verdad por lo menos tienes que hacerlo tu mismo,

Absoluta y rotundamente falso.

Una cosa es usar modelos exactos del asset store, que dicho de paso no tiene nada de malo. En un juego nadie se da cuenta de ninguna de estas cosas, te diría que incluso para esos assets super prefabricados de "magos o hechiceros animados", "modelos de monstruos", "caballeros medievales", etc, etc. Es un mundo tan pero tan grande que esto se ignora.

Otra muy diferente es usar un conjunto de herramientas que ayuden a tu desarrollo. Que ya que está, esto es lo que es Unity basicamente, si querés ser 100% original programate tu propio engine, con tu propio render, físicas, etc.

Está en el publisher en pensar en este tipo cosas, para dar la libertad necesaria al usuario. Muchas veces esto es lo que determina que un asset salga $5 o $50.

 

7 hours ago, Jhonatan00_00 said:

porque seguramente ese script del CharacterController que hayas descargado lo esté utilizando mucha mas gente, lo que va a hacer que tu juego sea un clon mas de otros tantos juegos mediocres que pululan por Internet.

Yo lo voy a estar utilizando, seguramente ... porque yo lo he creado.

7 hours ago, Jhonatan00_00 said:

Este tema por ejemplo aunque no sea un bug en si, es un fail por parte de los desarrolladores del engine, porque no me creo que hayan pensado en físicas realistas, iluminación realista, efectos realistas, su propio lenguaje de programación, animaciones con IK, etc, etc, etc y que no se hayan parado a pensar que igual necesitamos que un CharacterController, aunque el no use físicas, pueda chocar contra otro objeto que si las tiene y este se mueva...

No, es la naturaleza misma de un controller kinemático. El CharacterController que tenés en Unity no es de Unity, es una implementación sacada del controlador de Nvidia.

 

6 hours ago, Jhonatan00_00 said:

Para hacer un videojuego profesional hay que aprender y que programarlo todo desde cero viendo lo que funciona y lo que no y a veces funcionan cosas que a nadie se le habían ocurrido. Además, cada persona tiene una forma de entender la programación y para realizar lo mismo programan cosas completamente diferentes, por lo que prefiero programar mis propios script desde cero para entenderlos, porque el funcionamiento que tienen es de acuerdo a mi lógica y se para que está todo. Después veo como ha programado otra persona algo que ya he hecho yo en mi juego y no entiendo nada. 

Ah sí? y cuantos juegos has vendido profesionalmente? ... Digo, ya que suena a afirmación absoluta, casi sacada de los textos sagrados del gaming.

Desde ya que el link a mi Character Controller fue en plan de chiste ... la solución te da dí un parrafo anterior a dicho link (si es que te interesa programar todo tu juego al 100%).

Entiendo que debas ser original, y es admirable, yo tampoco tolero usar cosas de otros, hasta cierto punto. Pero la originalidad no va a estar determinada porque te hayas creado tu propia textura o modelo 3D, o incluso tu script de movimiento.

Es como dice iRobb:

7 hours ago, iRobb said:

Cómo decía un profesor mío de Historia, la única diferencia entre un romano y nosotros es el acceso a los conocimientos acumulados por otros. Si tienes un recurso al alcance no lo desaproveches. Modo metafísico Off.

Amén.

 

7 hours ago, Jhonatan00_00 said:

Lo he conseguido "solucionar" y lo pongo entre comillas porque tengo que toquetear de aquí y de allí hasta que las físicas se comporten como quiero, porque aunque funcionan, los objetos al colisionar con el personaje se mueven con demasiada fuerza, pero lo que he tenido que hacer para arreglarlo es un follón; he creado un objeto vacío al cual le he aplicado un CapsuleCollider y un RigidBody, después he tenido que programar que ese objeto siga las coordenadas del personaje sin afectar a su comportamiento, por lo que he tenido que desactivar las colisiones entre el personaje y este collider del objeto y después ajustar el radio del collider del objeto con Rigidbody para que sea algo mayor que el del CharacterControler y así choque al acercarse a otro objeto.

A ver, está bien rebuscársela, no hay nada de malo. Viendo tu solución, simplemente esto demuestra que todavía no estás dispuesto a amigarte con la doc, y hasta que lo no hagas vas a estar atando todo con alambre ( linda experiencia, pero lejos de ser lo ideal).

No lo digo en plan de "Hey! no me hiciste caso" o similar, desde luego que no, justo se dio que la solución estaba ahí, entregada en bandeja por parte de Unity (que no muchas veces se da). No existe ningun problema con el manual (aunque no digo que sea perfecto), en este caso te dice lo básico y necesario acerca del componente CharacterController. En él expresa que tenés tantos métodos, tantas variables, tantos callbacks, etc , etc. Vos querés que cuando se detecte un Rigidbody, se le aplique una fuerza a este, entonces te debería llamar la atención el callback que mencioné antes (podría o no estar, justo está). Este callback detecta exactamente esto, y para sumar, tenés un ejemplo escrito en la misma doc que hace exactamente lo que querés.

Ojo, no estoy diciendo que todo el mundo debería entender todo esto a la primera, es complicado encariñarse con cualquier tipo de documentación, en especial si no sos un programador. Pero por favor te pido, si estás pidiendo ayuda, y encima te la dan,  la reacción no debería ser "el manual está todo mal!", "No se entiende nada!", "los de Unity no saben lo que hacen!", claramente demuestra más que nada negación, antes que humildad y disponibilidad para aprender. Y desde ya que a los que te ayudan, este tipo de cosas provocan un "Pff, hubiera mejor ignorado el post y listo, para que ve moy a gastar en buscar los links y perder el tiempo".

Lo que yo veo es que siempre estás en contra del manual, sea cual sea el tema. Si es así, haz preguntas sobre él, no tiene nada de malo (incluso la información les va a servir a más de uno).

 

Desde luego que lo digo con la mejor de las intenciones :91_thumbsup:

 

Saludos.

  • Like 1

Share this post


Link to post
Share on other sites

El manual está traducido al español y no realizado en español directamente. Esto sumado a que lo explican todo de una forma muy técnica, hace que sea muy difícil entenderlo en la mayoría de los casos... no es que diga que sea una mierda. Unity es el mejor engine que existe a la fecha (al menos para mi), pero veo que a todos los engines siempre les faltan algo y Unity no es una excepción. A Blitz3D le faltaban las sombras en tiempo real y otros efectos por ejemplo. No es que haya sacado nunca un juego que se haya vendido (porque no he puesto ninguno a la venta), pero eso no quita que me pueda dar cuenta de que podrían haber hecho cosas mucho mejor para que nos fuesen mas fáciles.

El problema por el cual he cambiado de RigidBody a CharacterController es porque al saltar junto a una pared mi personaje se quedaba clavado siempre que la fuerza horizontal siguiese actuando y al llegar a cero entonces lo dejaba caer. Esto provocaba que no pudiera saltar correctamente plataformas, porque si caía sobre ella todo perfecto, pero si chocaba contra ella me quedaba pegado y fallaba.

Estuve mirando varias alternativas:

- Hacer que al colisionar contra la pared la velocidad de empuje fuese cero, lo que hacia que no pudiera deslizarme por una pared si empujaba hacia ella corriendo.

- Hacer que el Collider se hiciese mas pequeño si saltaba frente a una pared para que no rozase. Esto solucionaba que se quedase pegado al saltar frente a la pared, pero si saltaba desde mas lejos y chocaba se quedaba pegado igual.

- Como último recurso cree un Physic Material con fricción cero y en algunos sitios funcionaba, pero en otro el personaje saltaba mas de la cuenta al rozar con las paredes o frenaba algo el salto  y me hacia cosas muy raras.

En fin... no me quedó mas remedio que hacerlo con CharacterController y ahora se mueve perfectamente, además incluso el juego va mas fluido porque me da la sensación de que actualizar con Update da mas frames por segundo que con FixedUpdate (aunque probablemente sea porque no estuviese aplicando correctamente el FixedUpdate).

El problema ahora que tengo solucionado todo, es lo que he comentado antes, que no puedo usar físicas que ya tenia hechas. Por ejemplo al comenzar un nivel aparecemos en una sala con libros por todos sitios y tenia hecho el detalle de que podías saltar sobre los muebles y si les dabas a los libros se esturreaban por ahí... Es una chorrada pero ahora por usar CharacterController no me funcionan las fisicas correctamente, como no sea haciendo chapuzas como la que he hecho.

Si pudiera usar Rigidbody y conseguir que no se me quedase el personaje pegado en las paredes seria perfecto, porque así es como me iban las físicas... ¿Con que valores podría crear un Physic Material para el personaje y que se deslizase al saltar igual que lo hace con CharacterController?.

Gracias.

Share this post


Link to post
Share on other sites

No tengo mucho tiempo, pero visto esto me voy a tomar unos minutos para contestar.

Primero, quiero que entiendas algo y siempre que estés por formular tus preguntas o respuestas lo tengas en cuenta, "NO ERES PROFESIONAL Y NO TIENES LOS ESTUDIOS REFERENTES" por esta razón tus preguntas jamás tendrán una respuestas que te satisfazca. 

Segundo, las fisicas y mecanicas de tu juego no tienen ninguna limitación en cuanto a las herramientas que estés utilizando, esto quiere decir que dentro de todos los Engines existen alternativas que sirven únicamente como prototipos y no deberían ser utilizadas para producción (que no deban, no quiere decir que no puedan), el resto se supone que se debería desarrollar.

Tercero, en cuanto al desarrollo de una mecánica de movimiento estamos hablando de un tema "complejo", antes de realizar cualquier cosa deberias tener un conocimiento avanzado de trigonometría, lo cual dentro de la programación es el punto inicial y básico. Luego deberias entender geometría analítica.

Cuando tengas desarrolladas las dos bases anteriormente comentadas, podrias empezar a realizar críticas y opiniones constructivas, mientras tanto simplemente sos un ignorante creyendo que viendo 2 videos de youtube se convertirá en Miyamoto, y lamento pincharte el globo, esa idea está muy lejos de la realidad.

¿Como solucionar este problema? 

De la misma manera que millones de personas a lo largo de su vida realizan, si no sabes hacerlo entonces deberias comprarlo, se aplica para todo en esta vida, vivienda, automóviles, comidas, bebidas y absolutamente todo, y aún así adquiriendo estos productos tu responsabilidad como consumidor es aprender a usarlos.

Vamos al punto en concreto, no eres un "niño prodigio" eres un mortal como todos nosotros, deberás leer, estudiar y practicar para que algun dia puedas hablar con total criterio, de momento no lo hagas, solo demuestra el desinterés por entender.

Frente a la ignorancia mi lema sería "SI NO SABES, CÓMPRALO. SI LO QUE COMPRAS NO SOLUCIONA TU PROBLEMA, DEBERIAS INSULTAR TU IGNORANCIA" 

Share this post


Link to post
Share on other sites

Lo que está claro es que elegir un CharacterController ú otro de los que haya en el AssetStore no necesariamente resolverá tu problema. A veces el que consigues te basta y te sobra para lo que vas a hacer, y otras veces te toca crearte cosas por tu cuenta; Lo normal es que si te sirve algo y te parece razonable, lo compres. Es una práctica común...

Por eso es importante que antes de nada definas exactamente cuál es tu problema o qué quieres conseguir. Y luego ver si existe algunas solución que cumpla con lo que pides de la forma más parecida al resultado que quieres obtener.

 

 

Share this post


Link to post
Share on other sites
6 hours ago, Jhonatan00_00 said:

El manual está traducido al español y no realizado en español directamente.

Por esta razón te conviene ver/leer todo en ingles. Es máx fácil y a la larga lo vas a necesitar ... hoy en día,  sí o sí. Además si buscas mayor cantidad de contenido, nuevo, único y probablemente más detallado, seguramente esté en ingles. Las traducciones son por lo general una tremenda basura, y sí, la documentación de Unity en español te da tremendo mal viaje.

 

6 hours ago, Jhonatan00_00 said:

no es que diga que sea una mierda. Unity es el mejor engine que existe a la fecha (al menos para mi), pero veo que a todos los engines siempre les faltan algo y Unity no es una excepción. A Blitz3D le faltaban las sombras en tiempo real y otros efectos por ejemplo. No es que haya sacado nunca un juego que se haya vendido (porque no he puesto ninguno a la venta), pero eso no quita que me pueda dar cuenta de que podrían haber hecho cosas mucho mejor para que nos fuesen mas fáciles.

Una cosa es decir que no explican bien en la doc, o que tienen fallos graves... otra muy distinta es decir que les falta shadow mapping en su motor. Lo que yo veo de todos tus post es que es el primer tipo de críticas, es decir algo estructural, como si yo vendiera una herramienta y no comparte la documentación de la API, algo por el estilo. Cosa que no es cierto, Unity está muy pero muy bien explicado en general.

 

6 hours ago, Jhonatan00_00 said:

Si pudiera usar Rigidbody y conseguir que no se me quedase el personaje pegado en las paredes seria perfecto, porque así es como me iban las físicas... ¿Con que valores podría crear un Physic Material para el personaje y que se deslizase al saltar igual que lo hace con CharacterController?.

Ese fix está por todo internet, además que tenés muchísimos videos, incluso de la propia gente de Unity.

Ponele todo en cero, y a los que dicen min, max, average todos en min. También, en la documentación está todo esto.

https://docs.unity3d.com/Manual/class-PhysicMaterial.html

Dynamic Friction The friction used when already moving. Usually a value from 0 to 1. A value of zero feels like ice, a value of 1 will make it come to rest very quickly unless a lot of force or gravity pushes the object.
Static Friction The friction used when an object is laying still on a surface. Usually a value from 0 to 1. A value of zero feels like ice, a value of 1 will make it very hard to get the object moving.
Bounciness How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy, certain approximations are to be expected though that might add small amounts of energy to the simulation.
Friction Combine How the friction of two colliding objects is combined.
- Average The two friction values are averaged.
- Minimum The smallest of the two values is used.
- Maximum The largest of the two values is used.
- Multiply The friction values are multiplied with each other.
Bounce Combine How the bounciness of two colliding objects is combined. It has the same modes as Friction Combine Mode

 

A mi no me parece que todo eso esté mal explicado, o incompleto. Como te dije antes, aprender a leer la doc no es algo que viene gratis con el instalador de Unity, lleva tiempo. Quizás sea conveniente empezar esta práctica, es algo que muchos obviamos y nos cuesta años y años de aprender (además de que va muy ligado al conocimiento de cada uno de programación).

 

Share this post


Link to post
Share on other sites
4 hours ago, francoe1 said:

No tengo mucho tiempo, pero visto esto me voy a tomar unos minutos para contestar.

Primero, quiero que entiendas algo y siempre que estés por formular tus preguntas o respuestas lo tengas en cuenta, "NO ERES PROFESIONAL Y NO TIENES LOS ESTUDIOS REFERENTES" por esta razón tus preguntas jamás tendrán una respuestas que te satisfazca. 

Segundo, las fisicas y mecanicas de tu juego no tienen ninguna limitación en cuanto a las herramientas que estés utilizando, esto quiere decir que dentro de todos los Engines existen alternativas que sirven únicamente como prototipos y no deberían ser utilizadas para producción (que no deban, no quiere decir que no puedan), el resto se supone que se debería desarrollar.

Tercero, en cuanto al desarrollo de una mecánica de movimiento estamos hablando de un tema "complejo", antes de realizar cualquier cosa deberias tener un conocimiento avanzado de trigonometría, lo cual dentro de la programación es el punto inicial y básico. Luego deberias entender geometría analítica.

Cuando tengas desarrolladas las dos bases anteriormente comentadas, podrias empezar a realizar críticas y opiniones constructivas, mientras tanto simplemente sos un ignorante creyendo que viendo 2 videos de youtube se convertirá en Miyamoto, y lamento pincharte el globo, esa idea está muy lejos de la realidad.

¿Como solucionar este problema? 

De la misma manera que millones de personas a lo largo de su vida realizan, si no sabes hacerlo entonces deberias comprarlo, se aplica para todo en esta vida, vivienda, automóviles, comidas, bebidas y absolutamente todo, y aún así adquiriendo estos productos tu responsabilidad como consumidor es aprender a usarlos.

Vamos al punto en concreto, no eres un "niño prodigio" eres un mortal como todos nosotros, deberás leer, estudiar y practicar para que algun dia puedas hablar con total criterio, de momento no lo hagas, solo demuestra el desinterés por entender.

Frente a la ignorancia mi lema sería "SI NO SABES, CÓMPRALO. SI LO QUE COMPRAS NO SOLUCIONA TU PROBLEMA, DEBERIAS INSULTAR TU IGNORANCIA" 

Por cierto, Unity SI es gratis, no como me dijiste en otro tema que era de pago y te reiste de mi como siempre... Unity solo se paga cuando superas los 100.000 dólares al año (cosa que dudo que supere casi nadie con un videojuego indie).. Para el resto es gratuito osea que esa prepotencia no significa que sepas de nada... Copiar y pegar el manual cada vez que te da la gana no significa ni que lo entiendas tu tampoco xD

47 minutes ago, lightbug said:

Ese fix está por todo internet, además que tenés muchísimos videos, incluso de la propia gente de Unity.

Ponele todo en cero, y a los que dicen min, max, average todos en min. También, en la documentación está todo esto.

https://docs.unity3d.com/Manual/class-PhysicMaterial.html

Dynamic Friction The friction used when already moving. Usually a value from 0 to 1. A value of zero feels like ice, a value of 1 will make it come to rest very quickly unless a lot of force or gravity pushes the object.
Static Friction The friction used when an object is laying still on a surface. Usually a value from 0 to 1. A value of zero feels like ice, a value of 1 will make it very hard to get the object moving.
Bounciness How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy, certain approximations are to be expected though that might add small amounts of energy to the simulation.
Friction Combine How the friction of two colliding objects is combined.
- Average The two friction values are averaged.
- Minimum The smallest of the two values is used.
- Maximum The largest of the two values is used.
- Multiply The friction values are multiplied with each other.
Bounce Combine How the bounciness of two colliding objects is combined. It has the same modes as Friction Combine Mode

Todo esto ya lo he visto antes, pero lo he hecho y no me ha funcionado. Lo que voy a tener que hacer es crear un proyecto nuevo y desde el con un cubo y un plano y una pared, aplicar el Rigidbody, el Physic Material y probar a ver si funciona. Me ha pasado en Unity que las animaciones de los personajes me pesaban el doble o el triple, entraba al Animation View y me salían todas las modificaciones posibles de todos los fotogramas de todos los objetos padres e hijos de los personajes grabadas, en lugar de los fotogramas clave solamente. Tuve que solucionarlo creando un nuevo proyecto y montando de nuevo todo y se arregló. Unity a veces falla, como todo en esta vida, no es perfecto.

Voy a probar creando un proyecto nuevo y si al aplicar el Physic Material con friccion a cero funciona, era solo eso (se me acaba de ocurrir, pero igual no se arregla, o si). Saludos.

Share this post


Link to post
Share on other sites

Vaya con el vídeo. Hace 20 años se reían de nosotros y ahora nos vengamos. Es la venganza de los nerds! 

Por cierto, minuto 1:05 cuando dice "respeta a los demás porqué..."  y  se queda en blanco. Jajajaja

  • Like 1

Share this post


Link to post
Share on other sites

TAL Y COMO HABÍA PENSADO, ACABO DE CREAR UN NUEVO PROYECTO, EN CONCRETO ESTE QUE ADJUNTO Y TANTO EL RIGIDBODY COMO EL PHYSIC MATERIAL FUNCIONAN PERFECTAMENTE.

En mi proyecto, cuando creaba un Rigidbody no podía mover al personaje usando RigidBody.velocity y a la vez RigidBody.addForce porque una fuerza impedía que la otra actuase y está programado de la misma manera que el proyecto que adjunto y que si funciona, solo podía saltar o avanzar, saltar avanzando no podía hacerlo porque se quedaba en el suelo lo que me obligó a usar RigidBody.transform.position para  mover a los personajes mientras que saltaban con RigidBody.addForce. Yo veía en tutoriales de Youtube que la gente usaba las dos fuerzas para que el personaje se moviera y saltase pero a mi no me funcionaba y no sabia por que, que estaba haciendo mal, volviéndome loco.

El segundo error de Unity era el de los materiales, creaba un Physic Material y lo aplicaba a los objetos, pero lo que me hacia el personaje era a veces subir hasta el techo de un salto porque acumulaba fuerza del rozamiento de la pared y otras veces me frenaba. Uso Unity 4, pero voy a tener que actualizar porque tiene demasiados errores que me están haciendo perder el tiempo y volverme loco.

PARA QUE SE DEN CUENTA DE QUE CUANDO UNO PREGUNTA EN EL FORO Y YA SE VE OBLIGADO A HACER CHAPUZAS PARA QUE LAS COSAS FUNCIONEN NO SIEMPRE ES QUE NO SEPA NADA O QUE NO NOS HAYAMOS LEIDO EL MANUAL. A VECES LO LEEMOS Y NO HEMOS ENTENDIDO EXACTAMENTE LA APLICACIÓN DE LO QUE HEMOS LEIDO Y OTRAS VECES SIMPLEMENTE APLICAMOS LO APRENDIDO Y UNITY NO FUNCIONA, PORQUE SI, UNITY FALLA.

EDITADO --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

He borrado el archivo con el proyecto de prueba para que viesen que el problema estaba en mi proyecto y que creando uno nuevo se arreglaba porque me he dado cuenta de que saltaba al avanzar como necesitaba, pero tampoco lo hacia correctamente y esto si era un error de programación mio. La solución para arreglar este problema de saltar y avanzar usando fuerzas y que no se bloqueen la una a la otra es la siguiente:

void FixedUpdate () {
	    
        float CoordenadaY = rigidbody.velocity.y;
		CoordenadaY = rigidbody.velocity.y;
		rigidbody.velocity = new Vector3 (Input.GetAxis ("Horizontal") * 10, 0 , Input.GetAxis ("Vertical") * 10);
		rigidbody.velocity = new Vector3 (rigidbody.velocity.x, CoordenadaY, rigidbody.velocity.z);

		if (Input.GetKeyDown (KeyCode.Space)) {
			rigidbody.AddForce (Vector3.up * 50, ForceMode.Impulse);
		}

	}

 

Lo pongo así porque al editar y borrar el archivo no me deja resubirlo.

Edited by Jhonatan00_00

Share this post


Link to post
Share on other sites

Utilizas Unity4? Pero bueno, y tienes un Nokia de móvil? Instálate el Unity Hub y utiliza la 2018.4 LTS en la última versión que haya.

Share this post


Link to post
Share on other sites

iRobb, aunque me tengan por un tonto que no ha programado nada en su vida, yo comencé este proyecto en Blitz3D, programándolo en Basic (que es el lenguaje que usaba este engine obsoleto) y después lo porté todo a Unity y seguí desarrollándolo porque Blitz3D no tenia sombras en tiempo real ni interpolación de animaciones, etc, etc, etc... por eso pregunto por el foro, porque de C# no se mucho todavía, pero ya se cosas.

Todo esto lo comencé a desarrollar en un Netbook (un miniPC portatil de estos que sirven para estudiar en los institutos y que tienen menos potencia que mi tostadora) y como no tenia potencia tuve que instalar Unity 2 para que corriera porque los demás me pedían mas requisitos de sistema y no podia.

Al ver que mi juego pintaba bien, comencé a pensar que lo podía mejorar y al final venderlo, hacer escenarios mas grandes, etc, pero que para eso necesitaría un PC mas potente y me compré estas navidades un PC gamer con un Rycen 5 de 3,40 Ghz, una gráfica Nvidia de 4gb y 16gb de RAM, pero cuando instalé la última versión de Unity tanto la iluminación como otros muchos aspectos de mi proyecto ya no eran compatibles o iguales y cambiaban por completo, el juego se veía Horrible. Tuve que probar versión por versión todas las anteriores hasta que di con la versión mas nueva que no me rompía todo lo que había creado y me tuve que quedar con Unity 4.

Voy a tener que actualizar y que tratar de recrear la iluminación y todo lo mas parecida posible a como está ahora, pero va a ser mas tiempo perdido y lo mismo ni consigo que quede igual aunque piensen que la iluminación es mejor. Lo primero que voy a probar es crear un proyecto nuevo y montarlo todo de nuevo (ya lo haré mañana). Solo espero que no me falle nada mas otra vez si se arregla porque tiro el PC Gamer por la ventana.

 

Por cierto, esta es la primera y creo que la última imagen que muestro de mi juego, aún en desarrollo y con el que estoy teniendo infinidad de complicaciones por errores ed Unity, etc... Cuando esté terminado creo que igual no es una obra de Miyamoto, pero al menos podré estar orgulloso de haber hecho algo desde cero por mi mismo y que sea de gran calidad.

Espero no arrepentirme de haber subido esta imagen porque en Internet se copia todo en 24h.

EDITO -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

He borrado la imagen porque no me sentía cómodo publicando nada hasta no tener mi proyecto registrado aunque sea en SafeCreative. Una vez lo tenga registrado crearé un tema nuevo para enseñar mi proyecto. Un saludo.

 

Edited by Jhonatan00_00

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...