[RESOLVIDO] Dúvida relacionada ao sistema de inputs Rewired
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Dúvida relacionada ao sistema de inputs Rewired
Estou com um problema relacionado ao Rewired(https://guavaman.com/projects/rewired/docs/Documentation.html). Já dei uma boa lida no docs do sistema e mesmo assim não tenho ideia do que está se passando.
O problema se trás a tona quando tento chamar uma variável pública do AxisCalibration, a deadZone dentro do código já que procurei e aparentemente não é possível mudar no Rewired Input Manager.
Até o Rewired.AxisCalibration o codigo reconhece, mas quando tento chamar a variável deadZone dessa classe, o codigo retorna um erro afirmando não conhecer a variável
Mesmo eu já verificando na classe AxisCalibration e essa variável certamente existir dentro da classe em forma de float.
Minha dúvida é, eu estou fazendo alguma chamada na forma errada? se sim onde e como eu posso melhorar essa chamada do deadZone?
(Sou um usuário bem novo do Rewired então realmente peço desculpas caso deixe algum vacilo passar)
Meu código está realmente um problema sem achar uma forma de diminuir a sensibilidade do Gamepad.
Pelo problema ser apenas de uma chamada, acho desnecessário o envolvimento do código até por ele ser um pouco grande, mas caso preciso posso mandar no próximo post.
Obrigado!
O problema se trás a tona quando tento chamar uma variável pública do AxisCalibration, a deadZone dentro do código já que procurei e aparentemente não é possível mudar no Rewired Input Manager.
Até o Rewired.AxisCalibration o codigo reconhece, mas quando tento chamar a variável deadZone dessa classe, o codigo retorna um erro afirmando não conhecer a variável
Mesmo eu já verificando na classe AxisCalibration e essa variável certamente existir dentro da classe em forma de float.
Minha dúvida é, eu estou fazendo alguma chamada na forma errada? se sim onde e como eu posso melhorar essa chamada do deadZone?
(Sou um usuário bem novo do Rewired então realmente peço desculpas caso deixe algum vacilo passar)
Meu código está realmente um problema sem achar uma forma de diminuir a sensibilidade do Gamepad.
Pelo problema ser apenas de uma chamada, acho desnecessário o envolvimento do código até por ele ser um pouco grande, mas caso preciso posso mandar no próximo post.
Obrigado!
Artenks- Iniciante
- PONTOS : 1369
REPUTAÇÃO : 0
Idade : 20
Áreas de atuação : Programador Iniciante C#
Respeito as regras :
Re: [RESOLVIDO] Dúvida relacionada ao sistema de inputs Rewired
Entendi seu problema, apesar de nunca ter mexido no rewired por ser pago.
Só estou comentando pois acredito que a intenção de alterar o deadZone seja fazer o joystick menos "sensível". Pra isso, eu tenho uma sugestão.
Você pode multiplicar o valor do input por 10, depois fazer input * input, e por ultimo dividir esse resultado por 100.
aumentando o valor pra 10 e multiplicando ao quadrado, o input vai ser menos sensível em valores baixos e mais sensível quando chegar próximo de 1. A curva formada será uma parábola.
Com isso você vai conseguir fazer movimentos precisos movimentando pouco e ainda ter o valor total se puxar completamente o joystick.
newinput = ((oldInput * 10) * (oldInput * 10))/100;
Eu sempre uso isso pois joystick na tela sempre fica muito sensível e colocar um valor de deadzone nunca funcionou direito pra mim, a sensação de mexer o joystick e não ter um feeedback no personagem é horrível.
Só estou comentando pois acredito que a intenção de alterar o deadZone seja fazer o joystick menos "sensível". Pra isso, eu tenho uma sugestão.
Você pode multiplicar o valor do input por 10, depois fazer input * input, e por ultimo dividir esse resultado por 100.
aumentando o valor pra 10 e multiplicando ao quadrado, o input vai ser menos sensível em valores baixos e mais sensível quando chegar próximo de 1. A curva formada será uma parábola.
Com isso você vai conseguir fazer movimentos precisos movimentando pouco e ainda ter o valor total se puxar completamente o joystick.
newinput = ((oldInput * 10) * (oldInput * 10))/100;
Eu sempre uso isso pois joystick na tela sempre fica muito sensível e colocar um valor de deadzone nunca funcionou direito pra mim, a sensação de mexer o joystick e não ter um feeedback no personagem é horrível.
- Código:
public float RemapSqr(float x)
{
float xSqr = x * 10;
xSqr *= xSqr;
xSqr /= 100.0f;
return xSqr;
}
public float RemapCubic(float x)
{
float xCube = x * 10;
xCube = xCube * xCube * xCube;
xCube /= 1000.0f;
return xCube;
}
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Dúvida relacionada ao sistema de inputs Rewired
Fagner escreveu:Entendi seu problema, apesar de nunca ter mexido no rewired por ser pago.
Só estou comentando pois acredito que a intenção de alterar o deadZone seja fazer o joystick menos "sensível". Pra isso, eu tenho uma sugestão.
Você pode multiplicar o valor do input por 10, depois fazer input * input, e por ultimo dividir esse resultado por 100.
aumentando o valor pra 10 e multiplicando ao quadrado, o input vai ser menos sensível em valores baixos e mais sensível quando chegar próximo de 1. A curva formada será uma parábola.
Com isso você vai conseguir fazer movimentos precisos movimentando pouco e ainda ter o valor total se puxar completamente o joystick.
newinput = ((oldInput * 10) * (oldInput * 10))/100;
Eu sempre uso isso pois joystick na tela sempre fica muito sensível e colocar um valor de deadzone nunca funcionou direito pra mim, a sensação de mexer o joystick e não ter um feeedback no personagem é horrível.
- Código:
public float RemapSqr(float x)
{
float xSqr = x * 10;
xSqr *= xSqr;
xSqr /= 100.0f;
return xSqr;
}
public float RemapCubic(float x)
{
float xCube = x * 10;
xCube = xCube * xCube * xCube;
xCube /= 1000.0f;
return xCube;
}
Eu curti bastante a forma do script e realmente deve fazer uma melhora enorme no resultado final, mas ainda não tive sucesso na forma que entendi da sua lógica. Vou explicar esse problema que estou tendo em ação no projeto
(Só lembrado que consegui apenas entender uma parte da lógica, então posso ter feito o seu código fora da lógica certa, no fim desse post vou colocar a forma que fiz da lógica, pois realmente acabei não entendendo 100% o funcionamento)
O problema dentro do projeto acontece ao se movimentar, os inputs ao se movimentar até interage bem até parar de se movimentar. Em que o Player dá um leve flick pra posição X oposta ao que o direcional estava enquanto pressionado.
Em funcionamento é muito estranho pois só certa vezes ocorre isso e parece ocorrer mais quando você para o movimento com o direcional estando mais para o Y do que para o X. Foi esse problema que me fez procurar pelo deadZone.
Deixei um exemplo do problema aqui:
https://i.imgur.com/uXUp38I.mp4
Agora voltando para a sua solução, vou jogar a forma que testei no código que suspeito pelo fato de não ter compreendido a lógica:
- Código:
[size=14] float xSqr = moveInputX * 10;
xSqr *= xSqr;
xSqr /= 100.0f;
float xCube = xSqr * 10;
xCube = xCube * xCube * xCube;
xCube /= 1000.0f;
float newInput = ((xCube * 10)*(xCube * 10))/100;
rb.velocity = new Vector2(newInput * speed, rb.velocity.y);
[/size]
Artenks- Iniciante
- PONTOS : 1369
REPUTAÇÃO : 0
Idade : 20
Áreas de atuação : Programador Iniciante C#
Respeito as regras :
Re: [RESOLVIDO] Dúvida relacionada ao sistema de inputs Rewired
- Código:
rb.velocity = new Vector2(RemapSqr(inputVindoDoRewired) * speed, rb.velocity.y);
Use o método que postei, passando o valor vindo do rewired.
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Dúvida relacionada ao sistema de inputs Rewired
Dessa vez eu fiz da exata mesma forma da sua lógica, porém a sua lógica junto da implementação do controle normalmente, não teve muita diferença de resultados com relação a isso. Mas fico feliz em ter conhecido esse script, vou usar bastante, obrigado Fagner
"A zona morta não deve ser usada para reduzir a sensibilidade. A zona morta só deve ser usada para eliminar desvios e valores diferentes de zero quando o eixo está em seu ponto zero.
AxisCalibration.sensitivity é o que você deve modificar.
Isto está errado. Você está tentando acessar AxisCalibration como se fosse uma classe estática. Não é. Isso não faz sentido. Se fosse assim que fosse estruturado, haveria apenas um único AxisCalibration para cada controlador e cada eixo. Isso seria completamente inútil porque cada eixo é diferente e pode exigir configurações diferentes. AxisCalibation é um objeto que existe para cada eixo em cada controlador. Veja a documentação de calibração:
https://guavaman.com/projects/rewired/docs/HowTos.html#calibrating-controller-axes"
- Suporte do Rewired
É isso, preferi fazer uma resposta final caso alguem acabe cometendo o mesmo erro que o meu.
Terminando o tópico com uma resposta recebida do suporte do Rewired:
"A zona morta não deve ser usada para reduzir a sensibilidade. A zona morta só deve ser usada para eliminar desvios e valores diferentes de zero quando o eixo está em seu ponto zero.
AxisCalibration.sensitivity é o que você deve modificar.
Isto está errado. Você está tentando acessar AxisCalibration como se fosse uma classe estática. Não é. Isso não faz sentido. Se fosse assim que fosse estruturado, haveria apenas um único AxisCalibration para cada controlador e cada eixo. Isso seria completamente inútil porque cada eixo é diferente e pode exigir configurações diferentes. AxisCalibation é um objeto que existe para cada eixo em cada controlador. Veja a documentação de calibração:
https://guavaman.com/projects/rewired/docs/HowTos.html#calibrating-controller-axes"
- Suporte do Rewired
É isso, preferi fazer uma resposta final caso alguem acabe cometendo o mesmo erro que o meu.
Artenks- Iniciante
- PONTOS : 1369
REPUTAÇÃO : 0
Idade : 20
Áreas de atuação : Programador Iniciante C#
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Duvida sistema de level
» [RESOLVIDO] Gente estou com dúvida de como que faz o sistema do personagem (First Person)
» [Duvida]Relacionada a RayCast
» Dúvida relacionada a comportamento de objetos
» [Duvida] Relacionada a rotação de um objeto.
» [RESOLVIDO] Gente estou com dúvida de como que faz o sistema do personagem (First Person)
» [Duvida]Relacionada a RayCast
» Dúvida relacionada a comportamento de objetos
» [Duvida] Relacionada a rotação de um objeto.
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos