Velocidade da Movimentação
4 participantes
Página 1 de 1
Velocidade da Movimentação
Estou com esse script de movimentação
O problema é: quando eu aperto as teclas para o personagem ir na diagonal( tipo W+A ou W+D) o personagem anda numa velocidade muito maior. Como normalizar?
- Código:
using UnityEngine;
using System.Collections;
public class MovimentBasica : MonoBehaviour {
public bool moving = false;
public float speed ;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Moviment ();
}
void Moviment()
{
if (Input.GetKey (KeyCode.W)) {
transform.Translate (Vector3.up * speed * Time.deltaTime, Space.World);
moving = true;
}
if (Input.GetKey (KeyCode.S)) {
transform.Translate (Vector3.down * speed * Time.deltaTime, Space.World);
moving = true;
}
if (Input.GetKey (KeyCode.A)) {
transform.Translate (Vector3.left * speed * Time.deltaTime, Space.World);
moving = true;
}
if (Input.GetKey (KeyCode.D)) {
transform.Translate (Vector3.right * speed * Time.deltaTime, Space.World);
moving = true;
}
if (Input.GetKey (KeyCode.D) != true && Input.GetKey (KeyCode.A) != true && Input.GetKey (KeyCode.S) != true && Input.GetKey (KeyCode.W) != true) {
moving = false;
}
}
}
O problema é: quando eu aperto as teclas para o personagem ir na diagonal( tipo W+A ou W+D) o personagem anda numa velocidade muito maior. Como normalizar?
Joaogabrielf13- Avançado
- PONTOS : 3595
REPUTAÇÃO : 7
Respeito as regras :
Re: Velocidade da Movimentação
Bom bom vc teria que fazer assim
- Código:
using UnityEngine;
using System.Collections;
public class MoveController : MonoBehaviour
{
public float speed;
private Vector3 direction;
void Update()
{
CalcDirection();//Void de calcular a direção
}
void FixedUpdate()
{
MovementPerformance();// performasse da movimentação
}
private void MovementPerformance()
{
transform.Translate(direction * speed * Time.deltaTime);
}
private void CalcDirection()
{
direction = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
}
}
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Velocidade da Movimentação
Ficou bem bugada a movimentação.
Joaogabrielf13- Avançado
- PONTOS : 3595
REPUTAÇÃO : 7
Respeito as regras :
Re: Velocidade da Movimentação
Joaogabrielf13 escreveu:Ficou bem bugada a movimentação.
como assim ?
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Velocidade da Movimentação
Não é bugado o termo, é que o jogo é 2d, top down, e esse script não funciona muito bem nesse caso. Ex: Se eu rotacionar o personagem e deixar ele de cabeça pra baixo, se eu apertar w ele começa a fazer um moonwalker. Bom, é obvio que isso vá acontecer, para um jogo 3d seria perfeito mas não nesse caso. Quando o personagem fica de cabeça pra baixo, caso eu aperte o w, ele vai pra tras( ou pra frente, no caso ele vai pra a frente do player).
Nem sei se expliquei direito.
Nem sei se expliquei direito.
Joaogabrielf13- Avançado
- PONTOS : 3595
REPUTAÇÃO : 7
Respeito as regras :
Re: Velocidade da Movimentação
Joaogabrielf13 escreveu:Não é bugado o termo, é que o jogo é 2d, top down, e esse script não funciona muito bem nesse caso. Ex: Se eu rotacionar o personagem e deixar ele de cabeça pra baixo, se eu apertar w ele começa a fazer um moonwalker. Bom, é obvio que isso vá acontecer, para um jogo 3d seria perfeito mas não nesse caso. Quando o personagem fica de cabeça pra baixo, caso eu aperte o w, ele vai pra tras( ou pra frente, no caso ele vai pra a frente do player).
Nem sei se expliquei direito.
ata mais vc pode usar a mesma logica tirando o vector3 e usar o vector2
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Velocidade da Movimentação
Não deu certo.
Joaogabrielf13- Avançado
- PONTOS : 3595
REPUTAÇÃO : 7
Respeito as regras :
Re: Velocidade da Movimentação
Cara, está usando translate para fazer o Player??? ligeiramente não aconselho nem ferrando...
O correto seria utilizar Rigidbody trabalhar com rigidbody.velocity
O correto seria utilizar Rigidbody trabalhar com rigidbody.velocity
Re: Velocidade da Movimentação
sim, mas uma duvida por favor, quando eu aperto o botão pra ele andar como a instrução esta assim...
transform.GetComponent.<Rigidbody>().velocity.x = -velocidade;
se eu pulo, aperto para algum lado, e solto o botão, ele continua indo para o lado do respectivo botão, ele não para de ir para o lado saca, quando eu paro de apertar o botão, ele continua, tem algo que estou fazendo errado, ou eu poderia adicionar alguma coisa para que isso parede de acontecer, mais uma coisa, como não pode usar o transform. translate pq mesmo eu tambem não gosto dele, quando ele bate na parede se eu continuar apertando o botão de andar , ele fica entrando e saindo da parede e isso não é legal, o rigidbody.addforce fica legal, ele para na parede e fica la instangivel se eu continuar apertando o botão, mesmo pulando como sito o problema a cima, mas o rigidbody.addforce, derrapa d+e se eu almentar massa e drag e talz, fica ruim a fisica =\
quero algo como prince of persia saca, mario essas coisas. obrigado.
transform.GetComponent.<Rigidbody>().velocity.x = -velocidade;
se eu pulo, aperto para algum lado, e solto o botão, ele continua indo para o lado do respectivo botão, ele não para de ir para o lado saca, quando eu paro de apertar o botão, ele continua, tem algo que estou fazendo errado, ou eu poderia adicionar alguma coisa para que isso parede de acontecer, mais uma coisa, como não pode usar o transform. translate pq mesmo eu tambem não gosto dele, quando ele bate na parede se eu continuar apertando o botão de andar , ele fica entrando e saindo da parede e isso não é legal, o rigidbody.addforce fica legal, ele para na parede e fica la instangivel se eu continuar apertando o botão, mesmo pulando como sito o problema a cima, mas o rigidbody.addforce, derrapa d+e se eu almentar massa e drag e talz, fica ruim a fisica =\
quero algo como prince of persia saca, mario essas coisas. obrigado.
Édipo- MembroAvançado
- PONTOS : 4006
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: Velocidade da Movimentação
Cara, para começar, este comando em si já está errado... você não está pegando o componente do rigidbody O.o
você deveria usar apenas um
e aplicar um vector2 dos inputs Horizontal e vertical
você deveria usar apenas um
- Código:
GetComponent<Rigidbody>().velocity
e aplicar um vector2 dos inputs Horizontal e vertical
Re: Velocidade da Movimentação
ok, muito obrigado, mas eu estava pensando, caso eu pegue esse vector2 dos inputs verticais e horizontais, não daria trabalho pra converter pra touch depois??
Édipo- MembroAvançado
- PONTOS : 4006
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: Velocidade da Movimentação
Depende de que tipo de conversão você quer fazer... quer colocar para botões touch ou qual tipo de input está pensando???
Re: Velocidade da Movimentação
uai, cara eu queria colocar como botões do ui button mesmo, mas acho que não é muito legal, então no meu primero jogo eu fiz os botões na tela mesmo atravez de script, acho que vou fazer do mesmo jeito, saca né, colocar uma área de touch e se o jogador clicar la dentro fazer a ação
Édipo- MembroAvançado
- PONTOS : 4006
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: Velocidade da Movimentação
não precisa mais, eu fiz uma gambiarra aqui e deu certo como eu queria, obrigado.
Édipo- MembroAvançado
- PONTOS : 4006
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Tópicos semelhantes
» Duvida com velocidade X e velocidade Z
» Velocidade
» Velocidade do ThirdPersonController andar
» Limitador de velocidade
» Velocidade com Button UI.
» Velocidade
» Velocidade do ThirdPersonController andar
» Limitador de velocidade
» Velocidade com Button UI.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos