[RESOLVIDO] Ajuda com States
2 participantes
Página 1 de 1
[RESOLVIDO] Ajuda com States
Eu estava tentando criar uma StateMachine para o meu player e ela funciona perfeitamente até eu começar a rolar. O bool q controla a animação da rolagem fica alternando entre true e false sem parar, mesmo o State sendo o State q não controla a rolagem, e eu não sei pq. Eu já tentei criar uma condição q caso eu estivesse no State de movimentação, o bool seria false e mesmo assim não funcionou. Alguém consegue entender oq está acontecendo?(O mais estranho é q o State em si não fica alternando) Script:
- Código:
void FixedUpdate()
{
switch (movementStates)
{
case States.isMoving:
HandleMovement();
HandleCrouch();
HandleDodgeRoll();
break;
}
switch (movementStates)
{
case States.isRolling:
HandleRoll();
break;
}
}
private void HandleDodgeRoll()
{
if (Input.GetKeyDown(KeyCode.Mouse1))
{
canRoll = true;
movementStates = States.isRolling;
}
}
private void HandleRoll()
{
ani.SetBool("isRolling", canRoll);
if (!facingRight && isGrounded)
{
if (movementStates == States.isRolling)
{
rb.AddForce(Vector2.left * rollImpulse);
}
}
else if (facingRight && isGrounded)
{
if (movementStates == States.isRolling)
{
rb.AddForce(Vector2.right * rollImpulse);
}
}
}
Hamassfall- Avançado
- PONTOS : 2068
REPUTAÇÃO : 7
Respeito as regras :
Re: [RESOLVIDO] Ajuda com States
1) - Não Precisa ter 2 Switch, Isso Já iria Funcionar Normalmente:
2) - A movementStates Não Recebe Hora Alguma o Valor States.isMoving. (pelo menos nesse trecho do script)
Tente Adicionar :
No Final do Método HandleRoll()
- Código:
switch (movementStates)
{
case States.isMoving:
HandleMovement();
HandleCrouch();
HandleDodgeRoll();
break;
case States.isRolling:
HandleRoll();
break;
}
2) - A movementStates Não Recebe Hora Alguma o Valor States.isMoving. (pelo menos nesse trecho do script)
Tente Adicionar :
- Código:
movementStates = States.isMoving;
canRoll = false;
ani.SetBool("isRolling", canRoll);
No Final do Método HandleRoll()
Magnatah- Instrutor
- PONTOS : 3548
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [RESOLVIDO] Ajuda com States
Fazendo dessa forma o State muda automaticamente para o isMoving. Eu tinha colocado o valor States.isMoving em uma função separada e chamava ela através de um evento no animator no ultimo frame da animação.Magnatah escreveu:1) - Não Precisa ter 2 Switch, Isso Já iria Funcionar Normalmente:
- Código:
switch (movementStates)
{
case States.isMoving:
HandleMovement();
HandleCrouch();
HandleDodgeRoll();
break;
case States.isRolling:
HandleRoll();
break;
}
2) - A movementStates Não Recebe Hora Alguma o Valor States.isMoving. (pelo menos nesse trecho do script)
Tente Adicionar :
- Código:
movementStates = States.isMoving;
canRoll = false;
ani.SetBool("isRolling", canRoll);
No Final do Método HandleRoll()
Hamassfall- Avançado
- PONTOS : 2068
REPUTAÇÃO : 7
Respeito as regras :
Re: [RESOLVIDO] Ajuda com States
Consegui uma solução bem simples. Basicamente, toda a vez q o State isRolling é chamado, o canRoll fica true e ele fica true até a animação acabar, então eu fiz com q quando o canRoll ficasse false, dentro da função HandleRoll, eu trocasse o State para isMovingHamassfall escreveu:Fazendo dessa forma o State muda automaticamente para o isMoving. Eu tinha colocado o valor States.isMoving em uma função separada e chamava ela através de um evento no animator no ultimo frame da animação.Magnatah escreveu:1) - Não Precisa ter 2 Switch, Isso Já iria Funcionar Normalmente:
- Código:
switch (movementStates)
{
case States.isMoving:
HandleMovement();
HandleCrouch();
HandleDodgeRoll();
break;
case States.isRolling:
HandleRoll();
break;
}
2) - A movementStates Não Recebe Hora Alguma o Valor States.isMoving. (pelo menos nesse trecho do script)
Tente Adicionar :
- Código:
movementStates = States.isMoving;
canRoll = false;
ani.SetBool("isRolling", canRoll);
No Final do Método HandleRoll()
- Código:
private void HandleRoll()
{
ani.SetBool("isRolling", canRoll);
if (!facingRight && isGrounded)
{
if (movementStates == States.isRolling)
{
rb.AddForce(Vector2.left * rollImpulse);
}
}
else if (facingRight && isGrounded)
{
if (movementStates == States.isRolling)
{
rb.AddForce(Vector2.right * rollImpulse);
}
}
if (canRoll == false)
{
movementStates = States.isMoving;
}
}
Hamassfall- Avançado
- PONTOS : 2068
REPUTAÇÃO : 7
Respeito as regras :
Tópicos semelhantes
» Ajuda com animação[RESOLVIDO]
» [RESOLVIDO] Ajuda com Scripts
» [RESOLVIDO] Ajuda com IA
» [RESOLVIDO] Ajuda : botões UI
» [RESOLVIDO] Ajuda com iluminação
» [RESOLVIDO] Ajuda com Scripts
» [RESOLVIDO] Ajuda com IA
» [RESOLVIDO] Ajuda : botões UI
» [RESOLVIDO] Ajuda com iluminação
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos