Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice
  3. Dismiss Notice

Bug problem with my player's animation running

Discussion in 'Editor & General Support' started by SpeRubrum, Apr 21, 2024.

  1. SpeRubrum

    SpeRubrum

    Joined:
    Jan 19, 2022
    Posts:
    6
    Well, I'm having a problem with my player's animation running.

    I developed this script that controls practically everything related to the player (don't be ashamed to get it yourself, the code is free), it handled things correctly for its given instance, I don't think the problem is with it, but anyway, the transitions of the Animation occurs in the editor for the candles to happen, but in the game scene no, the player (of the Man type) does not execute the animation, no matter what it is, unlike the player (of the woman type) which works correctly. in a previous scene this is the customization scene that defines the parameters and what things will be taken or placed in the player, and that's where I found this error, because when I stopped focusing on the woman and focused on the man, the bug occurred, although previously this bug did not exist and both worked correctly, please help me, as not even GPT was able to handle the service.

    I'm sorry if the code language is different, as I'm Brazilian and the game will be released for a Brazilian target audience.


    Code (CSharp):
    1. usando o sistema;
    2. usando System.Collections;
    3. usando System.Collections.Generic;
    4. usando UnityEngine.EventSystems;
    5. em uso de TMPro;
    6. usando UnityEngine;
    7. usando UnityEngine.UI;
    8. usando UnityEngine.SceneManagement;
    9. usando Random = UnityEngine.Random;
    10. usando Unity.VisualScripting;
    11.  
    12. public class JogadorControlador : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
    13. {
    14. [cabeçalho("Base")]
    15. público FixedJoystick joyMovimento;
    16. público JogadorPrefabCriador jogadorData;
    17. público InimigoPrefabCriador[] InimigoData;
    18. jogador público GameObject;
    19. público GameObject[] Maos;
    20. público Vector3 Direcoes;
    21. controlador privado CharacterController;
    22. público Avatar JogadorAvatar;
    23. câmera pública principalCamera;
    24. animador público animador;
    25. flutuação pública;
    26. corda pública ProximaCena;
    27.  
    28. [Cabeçalho("Verificação de Solo")]
    29.     bool isGrounded;
    30. público Transformar ground_check;
    31. ground_distance de flutuação pública = 0,4f;
    32. ground_mask pública LayerMask;
    33.  
    34. [cabeçalho("Estatisticas")]
    35. público TextMeshProUGUI jogadorNome;
    36. carro alegórico públicoVelocidade;
    37. carro alegórico públicoVelocidadePadrao;
    38. carro alegórico público;
    39. carro alegórico públicoForcaMin, jogadorForcaMax;
    40. carro alegórico públicoDefesa;
    41. carro alegórico público;
    42. carro alegórico públicoVidaRemanecente;
    43. carro alegórico público;
    44. carro alegórico públicoEstaminaRemanecente;
    45. carro alegórico públicoExperiência;
    46. público bool jogadorMasculino, jogadoraFemenino;
    47. público JogadorPrefabCriador[] jogadorPrefab;
    48.  
    49.     [Header("Barras e botões")]
    50. público Slider BarraDeVida;
    51. público Slider BarraDeEstamina;
    52. público Slider BarraDeExperiencia;
    53. Botão público AtaqueBotão;
    54. Botão público PegarOuAbrirBotao;
    55. bool público regenerarEstamina;
    56. bool público CorrerBotao = falso;
    57.  
    58. [Cabeçalho("Personalização")]
    59. público GameObject cabeloCurtoHomem, cabeloLongoHomem, barba, bigode;
    60. público GameObject cabeloCurtoMulher, cabeloLongoMulher;
    61. público GameObject JogadorHomem, JogadorMulher;
    62. material público Renderizador[] Pelé;
    63. Renderizador público[] materialCabelo;
    64.     public int IDDoJogadorI = 0;
    65.  
    66. [header("componentes do audio")]
    67. carro alegórico público Cronometro;
    68. público int DubContador;
    69. público int NumeroDeFalas;
    70. público int falaMinima;
    71. público int falaMaxima;
    72. público int TempoFinal;
    73. carro alegórico público TempoCurto, TempoLongo;
    74.  
    75. [cabeçalho("Audio Aleatorio Do Radio")]
    76. público AudioSource RadioAudioControlador;
    77. público AudioClip[] RadioDubFatAleatorio;
    78.  
    79. private bool isCoroutineRunning = falso;
    80.  
    81.     void Start()
    82.     {
    83.         IDDoJogadorI = PropriedadesDaPele.IDDoJogador;
    84.  
    85.         JogadorPrefabCriador jogadorEscolhido = null; // Inicialize a variável fora do loop
    86.  
    87.         for (int i = 0; i < jogadorPrefab.Length; i++)
    88.         {
    89.             if (jogadorPrefab[i] != null && jogadorPrefab[i].IDDoJogadorI == PropriedadesDaPele.IDDoJogador)
    90.             {
    91.                 jogadorEscolhido = jogadorPrefab[i]; // Atribua o jogadorPrefab correto à variável jogadorEscolhido
    92.                 break; // Saia do loop, pois já encontrou o jogador correto
    93.             }
    94.         }
    95.  
    96.         if (jogadorEscolhido != null)
    97.         {
    98.             // Faça o que for necessário com o jogadorEscolhido
    99.             jogadorData = jogadorEscolhido;
    100.         }
    101.         else
    102.         {
    103.             // Lide com o caso em que nenhum jogadorPrefab corresponde ao IDDoJogador
    104.             Debug.LogError("Nenhum jogadorPrefab correspondente encontrado para o IDDoJogador " + PropriedadesDaPele.IDDoJogador);
    105.         }
    106.  
    107.  
    108.         if (PropriedadesDaPele.indexCabelo != 0 && JogadorHomem == true)
    109.         {
    110.             switch (PropriedadesDaPele.indexCabelo)
    111.             {
    112.                 case 1:
    113.                     if(PropriedadesDaPele.indexCabelo == 1)
    114.                     {
    115.                         cabeloCurtoHomem.SetActive(true);
    116.                         cabeloLongoHomem.SetActive(false);
    117.                     }
    118.                  
    119.                     break;
    120.                 case 2:
    121.                     if (PropriedadesDaPele.indexCabelo == 2)
    122.                     {
    123.                         cabeloCurtoHomem.SetActive(false);
    124.                         cabeloLongoHomem.SetActive(true);
    125.                     }
    126.                     break;
    127.             }
    128.         }
    129.         if (PropriedadesDaPele.indexCabelo != 0 && JogadorMulher == true)
    130.         {
    131.             switch (PropriedadesDaPele.indexCabelo)
    132.             {
    133.                 case 1:
    134.                     if (PropriedadesDaPele.indexCabelo == 2)
    135.                     {
    136.                         cabeloCurtoMulher.SetActive(true);
    137.                         cabeloLongoMulher.SetActive(false);
    138.                     }
    139.                     break;
    140.                 case 2:
    141.                     if (PropriedadesDaPele.indexCabelo == 2)
    142.                     {
    143.                         cabeloCurtoMulher.SetActive(false);
    144.                         cabeloLongoMulher.SetActive(true);
    145.                     }
    146.                     break;
    147.             }
    148.         }
    149.         if (IDDoJogadorI == 0 || IDDoJogadorI == 1)
    150.         {
    151.             if (PropriedadesDaPele.indexHomem != 0 && IDDoJogadorI == 0)
    152.             {
    153.                 JogadorHomem.SetActive(true);
    154.                 JogadorMulher.SetActive(false);
    155.                 JogadorAvatar = jogadorData.Avatar;
    156.                 animador.runtimeAnimatorController = jogadorData.ControladorDeAnimacao;
    157.             }
    158.             else if(PropriedadesDaPele.indexMulher != 0 && IDDoJogadorI == 1)
    159.             {
    160.                 JogadorHomem.SetActive(false);
    161.                 JogadorMulher.SetActive(true);
    162.                 JogadorAvatar = jogadorData.Avatar;
    163.                 animador.runtimeAnimatorController = jogadorData.ControladorDeAnimacao;
    164.             }
    165.         }
    166.  
    167.         bigode.SetActive(Convert.ToBoolean(PropriedadesDaPele.indexBigode));
    168.         barba.SetActive(Convert.ToBoolean(PropriedadesDaPele.indexBarba));
    169.  
    170.         for (int i = 0; i < materialPele.Length; i++)
    171.         {
    172.             materialPele[i].material.color = PropriedadesDaPele.CorDaPele;
    173.         }
    174.  
    175.         for (int i = 0; i < materialCabelo.Length; i++)
    176.         {
    177.             materialCabelo[i].material.color = PropriedadesDaPele.CorDoCabelo;
    178.         }
    179.  
    180.         controlador = GetComponent<CharacterController>();
    181.         animador = GetComponent<Animator>();
    182.         mainCamera = Camera.main;
    183.         regenerarEstamina = false;
    184.  
    185.         RadioAudioControlador = GetComponent<AudioSource>();
    186.         RadioAudioControlador.ignoreListenerPause = true;
    187.         ChamarCoroutine();
    188.  
    189.         BarraDeVida.value = jogadorVida;
    190.         BarraDeEstamina.value = jogadorEstamina;
    191.  
    192.         animador.avatar = jogadorData.Avatar;
    193.         jogadorNome = PropriedadesDaPele.NomeDoJogador;
    194.         animador.runtimeAnimatorController = jogadorData.ControladorDeAnimacao;
    195.         jogador = jogadorData.JogadorObjeto;
    196.         jogadorNome = jogadorData.Nome;
    197.         jogadorMasculino = jogadorData.Masculino;
    198.         jogadoraFemenino = jogadorData.Femenino;
    199.         jogadorVelocidade = jogadorData.Velocidade;
    200.         jogadorVelocidadePadrao = jogadorData.VelocidadePadrao;
    201.         correr = jogadorData.CorreVelocidade;
    202.         jogadorVida = jogadorData.Vida;
    203.         jogadorVidaRemanecente = jogadorData.VidaRemanecente;
    204.         jogadorEstamina = jogadorData.Estamina;
    205.         jogadorEstaminaRemanecente = jogadorData.EstaminaRemanecente;
    206.         jogadorForcaMin = jogadorData.ForcaMin;
    207.         jogadorForcaMax = jogadorData.ForcaMax;
    208.         jogadorDefesa = jogadorData.Defesa;
    209.         jogadorExperiencia = jogadorData.Experiencia;
    210.  
    211.  
    212.     }
    213.  
    214.     void Update()
    215.     {
    216.         MovimentacaoPorJoy();
    217.         RegenerarEstaminaEVida();
    218.         ElevarExperiencia();
    219.         Morte();
    220.     }
    221.  
    222.     void MovimentacaoPorJoy()
    223.     {
    224.         if (isGrounded && Direcoes.y < 0)
    225.         {
    226.             Direcoes.y = -2f;
    227.         }
    228.         else
    229.         {
    230.             Direcoes.y += gravidade * Time.deltaTime;
    231.         }
    232.  
    233.         Vector3 cameraForward = mainCamera.transform.forward;
    234.         Vector3 cameraRight = mainCamera.transform.right;
    235.  
    236.         cameraForward.y = 0f;
    237.         cameraRight.y = 0f;
    238.  
    239.         float horizontalInputJoy = joyMovimento.Horizontal;
    240.         float verticalInputJoy = joyMovimento.Vertical;
    241.  
    242.         Vector3 movimentoDirecaoJoy = (cameraForward * verticalInputJoy + cameraRight * horizontalInputJoy);
    243.  
    244.         if (movimentoDirecaoJoy != Vector3.zero)
    245.         {
    246.             // Movimentar o jogador na direção desejada
    247.             Vector3 movimento = movimentoDirecaoJoy.normalized * jogadorVelocidade * Time.deltaTime;
    248.             controlador.Move(movimento);
    249.  
    250.             // Definir as animações de movimento
    251.             animador.SetFloat("Horizontal", horizontalInputJoy);
    252.             animador.SetFloat("Vertical", verticalInputJoy);
    253.  
    254.             // Orientar o objeto na direção do movimento
    255.             if (movimentoDirecaoJoy.magnitude > 0.1f) // Garante que o movimentoDirecaoJoy não seja muito pequeno
    256.             {
    257.                 Quaternion novaRotacao = Quaternion.LookRotation(cameraForward);
    258.                 transform.rotation = Quaternion.Slerp(transform.rotation, novaRotacao, Time.deltaTime * 10f);
    259.             }
    260.         }
    261.         else
    262.         {
    263.             // Se não houver movimento, definir as animações de movimento para zero
    264.             animador.SetFloat("Horizontal", 0);
    265.             animador.SetFloat("Vertical", 0);
    266.         }
    267.         if(jogadorVelocidade >= correr && (horizontalInputJoy >= 0.1f || horizontalInputJoy <= 0.1f || verticalInputJoy >= 0.1 || verticalInputJoy <= 0.1))
    268.         {
    269.             animador.SetBool("Correr", true);
    270.             jogadorEstamina -= 10f * Time.deltaTime;
    271.         }
    272.         else if(jogadorVelocidade <= jogadorVelocidadePadrao)
    273.         {
    274.             animador.SetBool("Correr", false);
    275.         }
    276.  
    277.     }
    278.     public void CorrerAtivar()
    279.     {
    280.         CorrerBotao = true;
    281.         if (CorrerBotao && jogadorVelocidade != 0)
    282.         {
    283.            
    284.             jogadorVelocidade = correr;
    285.         }
    286.     }
    287.     public void CorrerDesativar()
    288.     {
    289.         CorrerBotao = false;
    290.         if (!CorrerBotao)
    291.         {
    292.            
    293.             jogadorVelocidade = jogadorVelocidadePadrao;
    294.         }
    295.     }
    296.  
    297.     public void OnPointerDown(PointerEventData eventData)
    298.     {
    299.         CorrerBotao = true;
    300.     }
    301.  
    302.     public void OnPointerUp(PointerEventData eventData)
    303.     {
    304.         CorrerBotao = false;
    305.     }
    306.         void ElevarExperiencia()
    307.     {
    308.         BarraDeExperiencia.value = jogadorExperiencia;
    309.     }
    310.  
    311.  
    312.     void RegenerarEstaminaEVida()
    313.     {
    314.         BarraDeVida.value = jogadorVida;
    315.         BarraDeEstamina.value = jogadorEstamina;
    316.  
    317.         if (BarraDeEstamina.value <= 100 && !regenerarEstamina)
    318.         {
    319.             regenerarEstamina = true;
    320.             StartCoroutine(RegenerarEstaminaFuncao());
    321.         }
    322.     }
    323.  
    324.     public void Socar()
    325.     {
    326.         if (AtaqueBotao == true)
    327.         {
    328.             if (jogadorEstamina >= 30)
    329.             {
    330.                 animador.SetBool("Socar", true);
    331.                 jogadorEstamina -= Random.Range(20f, 30f);
    332.                 jogadorExperiencia += Random.Range(1f, 3.5f);
    333.                 for (int i = 0; i < Maos.Length; i++)
    334.                 {
    335.                     if (Maos[i] != null)
    336.                     {
    337.                         Maos[i].SetActive(true);
    338.                     }
    339.                 }
    340.             }
    341.             else
    342.             {
    343.                 for (int i = 0; i < Maos.Length; i++)
    344.                 {
    345.                     if (Maos[i] != null)
    346.                     {
    347.                         Maos[i].SetActive(false);
    348.                     }
    349.                 }
    350.                 animador.SetBool("Socar", false);
    351.             }
    352.             StartCoroutine(PararDeSocar());
    353.  
    354.         }
    355.     }
    356.     IEnumerator PararDeSocar()
    357.     {
    358.  
    359.         yield return new WaitForSeconds(0.5f);
    360.         for (int i = 0; i < Maos.Length; i++)
    361.         {
    362.             if (Maos[i] != null)
    363.             {
    364.                 Maos[i].SetActive(false);
    365.             }
    366.         }
    367.         animador.SetBool("Socar", false);
    368.  
    369.     }
    370.  
    371.     IEnumerator RegenerarEstaminaFuncao()
    372.     {
    373.         while (jogadorEstamina < 100)
    374.         {
    375.             yield return new WaitForSeconds(0.5f);
    376.             jogadorEstamina += Random.Range(0, jogadorEstaminaRemanecente);
    377.  
    378.             // Garante que a estamina não ultrapasse 100
    379.             jogadorEstamina = Mathf.Min(jogadorEstamina, 100);
    380.  
    381.             // Atualiza a BarraDeEstamina
    382.             BarraDeEstamina.value = jogadorEstamina;
    383.         }
    384.  
    385.         regenerarEstamina = false;
    386.     }
    387.  
    388.     void OnApplicationFocus(bool hasFocus)
    389.     {
    390.         if (hasFocus)
    391.         {
    392.             ChamarCoroutine();
    393.         }
    394.     }
    395.  
    396.     public void ChamarCoroutine()
    397.     {
    398.         if (!isCoroutineRunning)
    399.         {
    400.             StartCoroutine(RadioRotina());
    401.         }
    402.     }
    403.     void OnTriggerEnter(Collider collider)
    404.     {
    405.         if (collider.gameObject.tag == "ColisorDeAtaque")
    406.         {
    407.  
    408.             for (int i = 0; i < InimigoData.Length; i++)
    409.             {
    410.            
    411.                jogadorVida -= Random.Range(InimigoData[i].ForcaMin - jogadorDefesa, InimigoData[i].ForcaMax - jogadorDefesa);
    412.              
    413.                
    414.             }
    415.  
    416.         }
    417.     }
    418.     public IEnumerator RadioRotina()
    419.     {
    420.         isCoroutineRunning = true;
    421.  
    422.         while (true)
    423.         {
    424.             if (DubContador < RadioDubFatAleatorio.Length)
    425.             {
    426.                 RadioAudioControlador.clip = RadioDubFatAleatorio[DubContador];
    427.                 RadioAudioControlador.Play();
    428.  
    429.                 // Aguarde a duração da faixa de áudio atual
    430.                 yield return new WaitForSeconds(RadioAudioControlador.clip.length);
    431.             }
    432.             else
    433.             {
    434.                 Debug.LogError("Índice fora do alcance para 'RadioAleatorio'.");
    435.                 RadioAudioControlador.enabled = false;
    436.                 isCoroutineRunning = false;
    437.                 yield break; // Saia da coroutine se o índice estiver fora do alcance.
    438.             }
    439.  
    440.             Cronometro = TempoFinal; // Reinicie o cronômetro para o próximo ciclo.
    441.  
    442.             int incrementoAleatorio = Random.Range(falaMinima, falaMaxima + 1);
    443.             DubContador += incrementoAleatorio;
    444.  
    445.             if (DubContador >= NumeroDeFalas || DubContador >= RadioDubFatAleatorio.Length)
    446.             {
    447.                 DubContador = 0;
    448.             }
    449.  
    450.             // Aguarde um curto período antes de iniciar a próxima faixa de áudio
    451.             yield return new WaitForSeconds(Random.Range(TempoCurto, TempoLongo));
    452.         }
    453.     }
    454.     void Morte()
    455.     {
    456.         if (jogadorVida <= 0f)
    457.         {
    458.             animador.SetBool("Morte", true);
    459.             StartCoroutine(DestruirObjeto());
    460.  
    461.         }
    462.  
    463.     }
    464.     IEnumerator DestruirObjeto()
    465.     {
    466.         yield return new WaitForSeconds(5f);
    467.         SceneManager.LoadScene(ProximaCena);
    468.         Destroy(gameObject);
    469.     }
    470. }
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using TMPro;
    5. using UnityEngine.UI;
    6. using UnityEngine.SceneManagement;
    7.  
    8. public class PropriedadesJogador : MonoBehaviour
    9. {
    10.     [Header("base")]
    11.     public Slider rodar;
    12.     public string ProximaCena;
    13.     public TextMeshProUGUI nome;
    14.     public GameObject NomePainel;
    15.     public GameObject HomemPainel, MulherPainel;
    16.     private int IndexCabelo, IndexBigode, IndexBarba, IndexHomem, IndexMulher;
    17.     public int IDDoJogadorJ;
    18.     public Avatar AvatarJogadorHomem, AvatarJogadorMulher;
    19.     public RuntimeAnimatorController AnimatorHomem, AnimatorMulher;
    20.  
    21.     [Header("Homem")]
    22.     public GameObject cabeloCurtoHomem, cabeloLongoHomem, barba, bigode;
    23.     public Color CorDaPeleHomem;
    24.     public Color CorDoCabeloEBarba;
    25.     public Slider Rhomem, Ghomem, Bhomem;
    26.     public Slider Rcbhomem, Gcbhomem, Bcbhomem;
    27.     public Renderer PeleHomem;
    28.     public JogadorPrefabCriador PropriedadesHomem;
    29.     public Renderer[] MaterialCabeloHomem;
    30.     public GameObject JogadorHomem;
    31.  
    32.     [Header("Mulher")]
    33.     public GameObject cabeloCurtoMulher, cabeloLongoMulher;
    34.     public Color CorDaPeleMulher;
    35.     public Color CorDoCabelo;
    36.     public Slider Rmulher, Gmulher, Bmulher;
    37.     public Slider Rcbmulher, Gcbmulher, Bcbmulher;
    38.     public Renderer PeleMulher;
    39.     public GameObject JogadorMulher;
    40.     public Renderer[] MaterialCabeloMulher;
    41.     public JogadorPrefabCriador PropriedadesMulher;
    42.    
    43.  
    44.     void Start()
    45.     {
    46.         rodar.value = 0.5f;
    47.         cabeloCurtoHomem = GameObject.FindWithTag("CabeloCurtoHomem");
    48.         cabeloCurtoMulher = GameObject.FindWithTag("CabeloCurtoMulher");
    49.         cabeloLongoHomem = GameObject.FindWithTag("CabeloLongoHomem");
    50.         cabeloLongoMulher = GameObject.FindWithTag("CabeloLongoMulher");
    51.         bigode = GameObject.FindWithTag("Bigode");
    52.         barba = GameObject.FindWithTag("Barba");
    53.  
    54.         JogadorHomem = GameObject.FindWithTag("JogadorHomem");
    55.         JogadorMulher = GameObject.FindWithTag("JogadorMulher");
    56.  
    57.         PropriedadesDaPele.Homem = PropriedadesHomem.Masculino;
    58.         PropriedadesDaPele.Mulher = PropriedadesMulher.Femenino;
    59.  
    60.         JogadorHomem.SetActive(false);
    61.         JogadorMulher.SetActive(false);
    62.  
    63.         HomemPainel.SetActive(false);
    64.         MulherPainel.SetActive(false);
    65.  
    66.         cabeloCurtoHomem.SetActive(false);
    67.         cabeloCurtoMulher.SetActive(false);
    68.         cabeloLongoHomem.SetActive(false);
    69.         cabeloLongoMulher.SetActive(false);
    70.         bigode.SetActive(false);
    71.         barba.SetActive(false);
    72.     }
    73.  
    74.     void Update()
    75.     {
    76.         JogadorHomem.transform.rotation = Quaternion.Euler(0, rodar.value, 0);
    77.         JogadorMulher.transform.rotation = Quaternion.Euler(0, rodar.value, 0);
    78.  
    79.         CorDaPeleHomem.r = Rhomem.value;
    80.         CorDaPeleHomem.g = Ghomem.value;
    81.         CorDaPeleHomem.b = Bhomem.value;
    82.  
    83.         CorDoCabeloEBarba.r = Rcbhomem.value;
    84.         CorDoCabeloEBarba.g = Gcbhomem.value;
    85.         CorDoCabeloEBarba.b = Bcbhomem.value;
    86.  
    87.         CorDaPeleMulher.r = Rmulher.value;
    88.         CorDaPeleMulher.g = Gmulher.value;
    89.         CorDaPeleMulher.b = Bmulher.value;
    90.  
    91.         CorDoCabelo.r = Rcbmulher.value;
    92.         CorDoCabelo.g = Gcbmulher.value;
    93.         CorDoCabelo.b = Bcbmulher.value;
    94.  
    95.  
    96.         PeleHomem.material.color = CorDaPeleHomem;
    97.         PeleMulher.material.color = CorDaPeleMulher;
    98.  
    99.         for (int i = 0; i < MaterialCabeloHomem.Length; i++)
    100.         {
    101.             MaterialCabeloHomem[i].material.color = CorDoCabeloEBarba;
    102.         }
    103.         for (int i = 0; i < MaterialCabeloMulher.Length; i++)
    104.         {
    105.             MaterialCabeloMulher[i].material.color = CorDoCabelo;
    106.         }
    107.     }
    108.     public void SemCabeloHomem()
    109.     {
    110.         cabeloCurtoHomem.SetActive(false);
    111.         cabeloLongoHomem.SetActive(false);
    112.         IndexCabelo = 0;
    113.     }
    114.     public void SemCabeloMulher()
    115.     {
    116.         cabeloCurtoMulher.SetActive(false);
    117.         cabeloLongoMulher.SetActive(false);
    118.         IndexCabelo = 0;
    119.     }
    120.     public void CabeloCurtoHomem()
    121.     {
    122.         cabeloCurtoHomem.SetActive(true);
    123.         cabeloLongoHomem.SetActive(false);
    124.         IndexCabelo = 1;
    125.     }
    126.     public void CabeloCurtoMulher()
    127.     {
    128.         cabeloCurtoMulher.SetActive(true);
    129.         cabeloLongoMulher.SetActive(false);
    130.         IndexCabelo = 1;
    131.     }
    132.     public void CabeloLongoHomem()
    133.     {
    134.         cabeloCurtoHomem.SetActive(false);
    135.         cabeloLongoHomem.SetActive(true);
    136.         IndexCabelo = 2;
    137.     }
    138.     public void CabeloLongoMulher()
    139.     {
    140.         cabeloCurtoMulher.SetActive(false);
    141.         cabeloLongoMulher.SetActive(true);
    142.         IndexCabelo = 2;
    143.     }
    144.     public void Barba()
    145.     {
    146.         barba.SetActive(true);
    147.         IndexBarba = 1;
    148.     }
    149.     public void Bigode()
    150.     {
    151.         bigode.SetActive(true);
    152.         IndexBigode = 1;
    153.     }
    154.     public void SemNada()
    155.     {
    156.         bigode.SetActive(false);
    157.         barba.SetActive(false);
    158.         IndexBigode = 0;
    159.         IndexBarba = 0;
    160.     }
    161.  
    162.     public void ResetarCorDaPeleHomem()
    163.     {
    164.         Rhomem.value = 1.1f;
    165.         Rhomem.value = 1.1f;
    166.         Rhomem.value = 1.1f;
    167.     }
    168.     public void ResetarCorDaPeleMulher()
    169.     {
    170.         Rmulher.value = 1.1f;
    171.         Gmulher.value = 1.1f;
    172.         Bmulher.value = 1.1f;
    173.     }
    174.     public void ResetarCorDoCabeloHomem()
    175.     {
    176.         Rcbhomem.value = 1.1f;
    177.         Gcbhomem.value = 1.1f;
    178.         Bcbhomem.value = 1.1f;
    179.     }
    180.     public void ResetarCorDoCabeloMulher()
    181.     {
    182.         Rcbmulher.value = 1.1f;
    183.         Gcbmulher.value = 1.1f;
    184.         Bcbmulher.value = 1.1f;
    185.     }
    186.  
    187.     public void HomemSeletor()
    188.     {
    189.         JogadorHomem.SetActive(true);
    190.         JogadorMulher.SetActive(false);
    191.         MulherPainel.SetActive(false);
    192.         HomemPainel.SetActive(true);
    193.         PropriedadesDaPele.Homem = PropriedadesHomem;
    194.         PropriedadesDaPele.AvatarJogadorHomem = AvatarJogadorHomem;
    195.         PropriedadesDaPele.AnimadorHomem = AnimatorHomem;
    196.         IndexHomem = 1;
    197.         IndexMulher = 0;
    198.         IDDoJogadorJ = 0;
    199.  
    200.     }
    201.  
    202.     public void MulherSeletor()
    203.     {
    204.         JogadorMulher.SetActive(true);
    205.         JogadorHomem.SetActive(false);
    206.         MulherPainel.SetActive(true);
    207.         HomemPainel.SetActive(false);
    208.         PropriedadesDaPele.Mulher = PropriedadesMulher;
    209.         PropriedadesDaPele.AvatarJogadorMulher = AvatarJogadorMulher;
    210.         PropriedadesDaPele.AnimadorMulher = AnimatorMulher;
    211.         IndexHomem = 0;
    212.         IndexMulher = 1;
    213.         IDDoJogadorJ = 1;
    214.     }
    215.     public void Confirmar()
    216.     {
    217.         PropriedadesDaPele.indexCabelo = IndexCabelo;
    218.         PropriedadesDaPele.indexBigode = IndexBigode;
    219.         PropriedadesDaPele.indexBarba = IndexBarba;
    220.         PropriedadesDaPele.indexHomem = IndexHomem;
    221.         PropriedadesDaPele.indexMulher = IndexMulher;
    222.         PropriedadesDaPele.CorDaPele = CorDaPeleHomem;
    223.         PropriedadesDaPele.CorDaPele = CorDaPeleMulher;
    224.         PropriedadesDaPele.CorDoCabelo = CorDoCabeloEBarba;
    225.         PropriedadesDaPele.CorDoCabelo = CorDoCabelo;
    226.         PropriedadesDaPele.Homem = PropriedadesHomem;
    227.         PropriedadesDaPele.Mulher = PropriedadesMulher;
    228.         PropriedadesDaPele.NomeDoJogador = nome;
    229.         PropriedadesDaPele.IDDoJogador = IDDoJogadorJ;
    230.         PropriedadesDaPele.AvatarJogadorMulher = AvatarJogadorMulher;
    231.         PropriedadesDaPele.AvatarJogadorHomem = AvatarJogadorHomem;
    232.  
    233.         NomePainel.SetActive(true);
    234.     }
    235.     public void Mundo()
    236.     {
    237.         SceneManager.LoadScene(ProximaCena);
    238.  
    239.     }
    240. }
    241.  
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using TMPro;
    4. using UnityEngine;
    5. using TMPro;
    6.  
    7. [CreateAssetMenu(fileName = "Jogador", menuName = "TGM/Novo Jogador")]
    8. public class JogadorPrefabCriador : ScriptableObject
    9. {
    10.     [Header("Base")]
    11.     public GameObject JogadorObjeto;
    12.     public RuntimeAnimatorController ControladorDeAnimacao;
    13.     public Avatar Avatar;
    14.     public AudioClip[] JogadorAudio;
    15.     public JogadorPrefabCriador Jogador;
    16.     public int IDDoJogadorI;
    17.    
    18.  
    19.     [Header("Atributos")]
    20.     public TextMeshProUGUI Nome;
    21.     public float VelocidadePadrao;
    22.     public float Velocidade;
    23.     public float CorreVelocidade;
    24.     public float ForcaMin, ForcaMax;
    25.     public float DanoCriticoMax;
    26.     public float Defesa;
    27.     public float Vida;
    28.     public float VidaRemanecente;
    29.     public float Estamina;
    30.     public float Experiencia;
    31.     public float EstaminaRemanecente;
    32.     public bool Masculino, Femenino;
    33.  
    34.  
    35.  
    36. }
    37.  
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using TMPro;
    5.  
    6. public class PropriedadesDaPele : MonoBehaviour
    7. {
    8.     public static int indexCabelo;
    9.     public static int indexBigode;
    10.     public static int indexBarba;
    11.     public static int indexHomem;
    12.     public static int indexMulher;
    13.     public static int IDDoJogador;
    14.     public static Color CorDaPele;
    15.     public static Color CorDoCabelo;
    16.     public static TextMeshProUGUI NomeDoJogador;
    17.     public static bool Homem, Mulher;
    18.     public static PropriedadesJogador PropriedadesMulher1, PropriedadesHomem1;
    19.     public static Avatar AvatarJogadorHomem, AvatarJogadorMulher;
    20.     public static RuntimeAnimatorController AnimadorHomem, AnimadorMulher;
    21. }
    22.  
    Here are the images with more data
    https://imgur.com/a/sBsjwou


    The first script refers to the player.
    The second script refers to the customization scene
    The third script is the data for each type of player (Man and woman.)
    The fourth script is the data saved from the customization area to be used in the game scene, which is where the player moves and everything...

    You can also see that one of the images is missing the controller and the avatar, this is because the first script will define this based on the others, which normally happens.
     
  2. bugfinders

    bugfinders

    Joined:
    Jul 5, 2018
    Posts:
    2,168
    if it works for one, and not the other, you need to identify what is different, think of it like spot the difference
     
  3. SpeRubrum

    SpeRubrum

    Joined:
    Jan 19, 2022
    Posts:
    6
    I've already checked all the differences, not almost any, because everything is similar, even the animation data is similar (only changing the animation, so it doesn't become something so standard), and the ScriptableObject.
     
  4. bugfinders

    bugfinders

    Joined:
    Jul 5, 2018
    Posts:
    2,168
    if it works for one not the other the difference has to be settings / names of things on the one that does, so if they use the same animation control, etc, and no, cant read your comments so not sure where /what the "candle" code is handled, but, it should be debuggable.
     
  5. SpeRubrum

    SpeRubrum

    Joined:
    Jan 19, 2022
    Posts:
    6
    Follow this video, I will be clearer, and maybe it will help you understand my problem.

     
  6. bugfinders

    bugfinders

    Joined:
    Jul 5, 2018
    Posts:
    2,168
    no because there was no animator/controller on the initial object but there clearly is one.. somewhere.. or you set them up somehow, so either the animation for the man is different, or is called different or something.. but no, it doesnt help.
     
  7. SpeRubrum

    SpeRubrum

    Joined:
    Jan 19, 2022
    Posts:
    6
    I noticed that if I remove one of the "Players" objects, for example: the male player, which doesn't work, and replace it with another variant of it, it will work again, but the other "Female Player" will stop working, even if animations normally occur in the Animator editing area. This does not occur in the game scene. Does this change anything about how you can help me?
     
  8. SpeRubrum

    SpeRubrum

    Joined:
    Jan 19, 2022
    Posts:
    6
    oh, who can help me?
     
  9. SpeRubrum

    SpeRubrum

    Joined:
    Jan 19, 2022
    Posts:
    6
    Are you still active?
     
  10. Kurt-Dekker

    Kurt-Dekker

    Joined:
    Mar 16, 2013
    Posts:
    39,369
    All of the animation system stuff works 100% so if you're having difficulty, back up and work through an example tutorial on it and see where your setup differs / diverges.

    If you are convinced the Animator is set up properly, move onto debugging the code.


    By debugging you can find out exactly what your program is doing so you can fix it.

    https://docs.unity3d.com/Manual/ManagedCodeDebugging.html

    Use the above techniques to get the information you need in order to reason about what the problem is.

    You can also use
    Debug.Log(...);
    statements to find out if any of your code is even running. Don't assume it is.

    Once you understand what the problem is, you may begin to reason about a solution to the problem.



    Here is how to report your problem productively in the Unity3D forums:

    http://plbm.com/?p=220

    This is the bare minimum of information to report:

    - what you want
    - what you tried
    - what you expected to happen
    - what actually happened, log output, variable values, and especially any errors you see
    - links to actual Unity3D documentation you used to cross-check your work (CRITICAL!!!)

    The purpose of YOU providing links is to make our job easier, while simultaneously showing us that you actually put effort into the process. If you haven't put effort into finding the documentation, why should we bother putting effort into replying?
     
  11. bugfinders

    bugfinders

    Joined:
    Jul 5, 2018
    Posts:
    2,168
    yes, but, without any additional information i couldnt offer anything, so i left you to it.