|
Post by orphangames on Mar 8, 2023 20:52:05 GMT
How to make a character switcher like in Genshin Impact using buttons 1,2,3,4 or just some button, f.e. "z" and share the same inventory, etc I already did a script that enables one character and disables another but they're completely different, don't have same invertory, and camera doesn't move with the second or third character, it follows only the first one. I don't know how to solve this
|
|
|
Post by axbaby123 on Mar 9, 2023 2:04:46 GMT
Swapping out the 3D model might be the easiest. Getkeycode A , model/mesh, set active false, model/mesh set active true. 2 events switch one mesh off, switch the other on. Not a coder as you can see. Swapping out the camera and controller adds more complexity. Different Vcams might make it easier for the camera stuff, set priority 0 to 10, set priority 10 to 0. ThirdpersonCamera
MainCamera=cinemachine brain
vcam1 vcam2 vcam3 vcam4
Edit: By the way I have already created scripts that do all of what I mentioned. Took an hour fighting with ChatGTP two months ago but it works perfectly.
|
|
|
Post by Drakima on Mar 10, 2023 3:32:41 GMT
|
|
|
Post by zerored on Apr 11, 2023 0:41:58 GMT
How to make a character switcher like in Genshin Impact using buttons 1,2,3,4 or just some button, f.e. "z" and share the same inventory, etc I already did a script that enables one character and disables another but they're completely different, don't have same invertory, and camera doesn't move with the second or third character, it follows only the first one. I don't know how to solve this Si me paso lo mismo al principio y me volvió loco por un par de semanas, cuando cambias de personaje la cámara deja de responder o el personaje ya no se mueve. No se si es la forma correcta pero yo lo solucione asi. 1 - Crea un Empty y coloca un un objeto vacío con el tag player Crea una cámara vacía que no muestre nada ( en mi caso es necesario ya que tengo script que necesitan que allá una cámara y un player siempre activo. 2 - Crea un prefabricado de tu player. 3 - crea un script que encienda el empty con la camara y el player temporal, luego busque y elimine el player que esta en juego, luego que instancie el nuevo player, luego desactive la camara y player temporal. Es algo rebuscado pero funciona perfectamente. Necesitaras : Botones para cada personaje Script para instanciar el player Script para buscar el player en la escena, es mejor uno que busque por nombre. Script que guarde y recupere la posición del player para que al cambiar aparezca en la misma posición que el anterior. En cuanto al inventario, todos pueden usar el mismo inventario, inventario diferente o el mismo inventario con diferentes objetos eso ya no depende de cada uno.
|
|
|
Post by Drakima on Apr 11, 2023 16:58:53 GMT
Zerored would you be kind enough to share a small project with this feature for the community to learn from since you say that you were able to implement it?
|
|
|
Post by zerored on Apr 12, 2023 8:00:36 GMT
Zerored would you be kind enough to share a small project with this feature for the community to learn from since you say that you were able to implement it? por el momento me temo que no puedo, lo probé de forma manual activando las funciones en el inspector y tuve muy buenos resultados. el primero cambiar el personaje sin que se afecte la cámara ni la locomoción, el segundo es que puedes activar diferentes personajes con diferentes tipos de camaras como cinemachine, lo cual es bueno si quieres crear cinemáticas, y lo mejor es que puedes instanciar un jugador prefabricado lo que permite tener una lista mas limpia y una carga de juego mas rápida. Sin embargo no eh tenido tiempo de organizarlo todo, crear los menú de cambio de personaje y demás, eh usado un script simple de instancia para el prefabricado. y usando el método antes mencionado. Algo a tener en cuenta es que el personaje se instanciara en el mundo y debido al comportamiento del controlador es necesario encapsular al personaje. Con esto me refiero a crear un Objeto vacío en la posición 0.0.0 y colocar dentro el player con el controlador. El player debes colocarlo en la posición que quieres que inicie, esta posición ya no estará dentro del mundo sino dentro del Objeto vacío. Cuando el personaje se instancie en la escena siempre lo hará en la misma posición que indica el prefabricado y se moverá a la posición guardada por el script de guardado de posición. El cual debe estar en el player junto a los demás script del controlador. ya que solo moverá el personaje y no el Objeto vacío. Por el momento me encuentro haciendo un sistema de cambio de ropa usando el inventario, estabilizando las animaciones y otras funciones, no puedo prometerte un proyecto de prueba pronto.
|
|