3
respostas

Como rotacionar - junto com a mira - no controle XBOX?

Olá, preciso saber como setar o controle do xbox para ter a mesmas resposta que o teclado + mouse. O joystick funciona na parte do teclado, mas não na do mouse. Daria para usar o eixo 4th e 5 th do analógico direito? Ou ainda, que fosse automático?

Eu tentei usar a lógica da câmera seguindo o jogador, ou mesmo do zumbi seguindo jogador. Mas, não deu certo.

Obrigado.

3 respostas

Olá, tudo bem?

Você teria que mudar um pouco esse esquema de rotação porque da forma que está só vai funcionar com o mouse mesmo.

Acredito que você possa fazer algo como:

 float x = Input.GetAxis("Input Xbox X aqui vai o nome que você vai dar");
 float y = Input.GetAxis("Input Xbox X aqui vai o nome que você vai dar");
 if (x != 0 || y != 0) {
     float angle = Mathf.Atan2(y, x) * Mathf.Rad2Deg;
     transform.eulerAngles = new Vector3(0, angle, 0);
 }

Eu fiz esse script meio de cabeça mas acredito que pode te dar um norte. Agora se você quiser fazer algo mais recente você pode usar o novo input system que funciona bem melhor com controles. Você encontra vídeos sobre ele usando controles de xbox no canal da Unity ou em canais famosos como Brackeys.

Oi professor, tudo bom?

Eu não vou dizer que não tentei, porque tentei rs. Mas, como eu não entendo bem C# eu não entendi exatamente onde aplicar seu código e como fazer funcionar. Eu apliquei no fix update, update etc. Enfim, não "peguei" como fazer. Mas, entendi a lógico.

Vou tentar pesquisar os controles no canal da Unity/Brackeys.

Obrigado.

Depois de configurar o stick da horizontal e vertical da direita você poderia colocar no Update mesmo, eu fiz algumas mudanças aqui depois de testar e ficou legal de jogar. No meu caso ficou assim:

` void Update { float x = Input.GetAxis("RightHorizontal"); float y = Input.GetAxis("RightVertical"); Debug.Log("x: " + x + " y: " + y); // Debug pra você testar os inputs :) if (x != 0 || y != 0) { float angle = Mathf.Atan2(x, -y) * Mathf.Rad2Deg; transform.eulerAngles = new Vector3(0, angle, 0); } }