Como anular uma das teclas no Unity
2 participantes
Página 1 de 1
Como anular uma das teclas no Unity
Olá, eu estou criando um jogo 3D simples, e quero saber se tem como eu anular uma tecla enquanto outra está sendo clicada. Isso porque está tendo um conflito...
Quando eu aperto "Shift", o personagem corre. Quando eu aperto "S" o personagem anda para trás. Mas quando eu aperto "S" e depois ao mesmo tempo "Shift", o personagem começa a correr. O "Shift" está predominando sobre o "S"
Eu quero poder desabilitar a corrida enquanto estiver andando para trás...
Quando eu aperto "Shift", o personagem corre. Quando eu aperto "S" o personagem anda para trás. Mas quando eu aperto "S" e depois ao mesmo tempo "Shift", o personagem começa a correr. O "Shift" está predominando sobre o "S"
Eu quero poder desabilitar a corrida enquanto estiver andando para trás...
- Código:
[size=14]using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class lehScript : MonoBehaviour
{
private CharacterController controller;
private Animator anim;
[SerializeField] private float speed;
[SerializeField] private float runSpeed;
[SerializeField] private float gravity;
[SerializeField] private float rotSpeed;
private float rot;
private Vector3 moveDirection;
// Start is called before the first frame update
void Start()
{
controller = GetComponent<CharacterController>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Move();
}
void Move()
{
if(controller.isGrounded)
{
if(Input.GetKey(KeyCode.W))
{ // O número no fim de "anim", me diz qual animação estou pegando lá nas flechas do "animator"
moveDirection = Vector3.forward * speed;
anim.SetInteger("transition", 1);
}
if(Input.GetKey(KeyCode.S))
{
moveDirection = Vector3.forward * -speed;
anim.SetInteger("transition", 2);
}
if(Input.GetKey(KeyCode.LeftShift))
{
moveDirection = Vector3.forward * runSpeed;
anim.SetInteger("transition", 3);
}
if(Input.GetKeyUp(KeyCode.W))
{ // O número no fim de "anim", me diz qual animação estou pegando lá nas flechas do "animator"
moveDirection = Vector3.zero;
anim.SetInteger("transition", 0);
}
if(Input.GetKeyUp(KeyCode.S))
{ // O número no fim de "anim", me diz qual animação estou pegando lá nas flechas do "animator"
moveDirection = Vector3.zero;
anim.SetInteger("transition", 0);
}
if(Input.GetKeyUp(KeyCode.LeftShift))
{ // O número no fim de "anim", me diz qual animação estou pegando lá nas flechas do "animator"
moveDirection = Vector3.zero;
anim.SetInteger("transition", 0);
}
}
rot += Input.GetAxis("Horizontal") * rotSpeed * Time.deltaTime;
transform.eulerAngles = new Vector3(0, rot, 0);
moveDirection.y -= gravity * Time.deltaTime;
moveDirection = transform.TransformDirection(moveDirection);
controller.Move(moveDirection * Time.deltaTime);
}
}[/size]
WhhiteFox- Iniciante
- PONTOS : 831
REPUTAÇÃO : 0
Respeito as regras :
Re: Como anular uma das teclas no Unity
Bom, se o problema for apenas pro S, dá pra checar ele no penúltimo if, a frente apenas do shift. dentro do if use um return; após o código original, dessa forma se o S tiver pressionado, ele vai ignorar a checagem do shift.
mas atenção, isso só funciona se o seu teclado tiver suporte, existe um problema relacionado com a forma que os teclados de membrana leem as teclas pressionadas, algumas letras compartilham a mesma trilha e podem dar conflito umas com as outras, se esse for o caso do seu teclado, o S nem vai ser registrado se o shift tiver pressionado. ignorar via código não vai ter efeito algum.
https://forum.adrenaline.com.br/threads/combinacao-de-teclas-com-barra-de-espaco-nao-funciona.670816/
mas atenção, isso só funciona se o seu teclado tiver suporte, existe um problema relacionado com a forma que os teclados de membrana leem as teclas pressionadas, algumas letras compartilham a mesma trilha e podem dar conflito umas com as outras, se esse for o caso do seu teclado, o S nem vai ser registrado se o shift tiver pressionado. ignorar via código não vai ter efeito algum.
https://forum.adrenaline.com.br/threads/combinacao-de-teclas-com-barra-de-espaco-nao-funciona.670816/
SteveRogers- Instrutor
- PONTOS : 2672
REPUTAÇÃO : 156
Respeito as regras :
Tópicos semelhantes
» [Blender] Como redefinir teclas padrões ?
» como dminuir o lag no meu unity 5
» Eu estou com dúvida de como instalar a unity com Unity Hub
» -[COMO MUDO A APARENCIA DO UNITY?]-
» Como aprender unity
» como dminuir o lag no meu unity 5
» Eu estou com dúvida de como instalar a unity com Unity Hub
» -[COMO MUDO A APARENCIA DO UNITY?]-
» Como aprender unity
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos