[Duvida] Sistema de movimentação de personagem em 4 direções.
4 participantes
Página 1 de 1
[Duvida] Sistema de movimentação de personagem em 4 direções.
Boa tarde pessoal, gostaria de saber como implementar movimentação de um personagem em 4 direções (esquerda, direita, cima e baixo) para game em 2D, fiz alguns testes aqui mas não obtive resultados satisfatórios, pois pressionando teclas como cima e esquerda jutas acarreta na movimentação diagonal.
Última edição por FerX95 em Qui Fev 25, 2016 6:00 pm, editado 1 vez(es)
FerX95- Iniciante
- PONTOS : 3347
REPUTAÇÃO : 3
Idade : 29
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
Da uma olhada nesse tutor simples:
hellkiller- Mestre
- PONTOS : 4055
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
seu game é em 2D ou 3D?
dfop02- Avançado
- PONTOS : 3260
REPUTAÇÃO : 2
Idade : 27
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
dfop02 escreveu:seu game é em 2D ou 3D?
Me desculpem esqueci de mencionar isso, ele é 2D pessoal.
FerX95- Iniciante
- PONTOS : 3347
REPUTAÇÃO : 3
Idade : 29
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
Que tipo de jogo?
hellkiller- Mestre
- PONTOS : 4055
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
FerX95 escreveu:dfop02 escreveu:seu game é em 2D ou 3D?
Me desculpem esqueci de mencionar isso, ele é 2D pessoal.
Nesse caso você pode usar o script que eu mesmo escrevi, vou te passar, é bem básico, mas é pra você ter uma noção.
- Código:
public Rigidbody2D PlayerRigidbody;
void Update() {
if (Input.GetKeyDown("a")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position - new Vector2(1, 0));
}
else if (Input.GetKeyDown("d")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position + new Vector2(1, 0));
}
else if (Input.GetKeyDown("w")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position + new Vector2(0, 1));
}
else if (Input.GetKeyDown("s")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position - new Vector2(0, 1));
}
}
dfop02- Avançado
- PONTOS : 3260
REPUTAÇÃO : 2
Idade : 27
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
dfop02 escreveu:FerX95 escreveu:dfop02 escreveu:seu game é em 2D ou 3D?
Me desculpem esqueci de mencionar isso, ele é 2D pessoal.
Nesse caso você pode usar o script que eu mesmo escrevi, vou te passar, é bem básico, mas é pra você ter uma noção.
- Código:
public Rigidbody2D PlayerRigidbody;
void Update() {
if (Input.GetKeyDown("a")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position - new Vector2(1, 0));
}
else if (Input.GetKeyDown("d")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position + new Vector2(1, 0));
}
else if (Input.GetKeyDown("w")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position + new Vector2(0, 1));
}
else if (Input.GetKeyDown("s")){
PlayerRigidbody.MovePosition(PlayerRigidbody.position - new Vector2(0, 1));
}
}
Eu tinha feito algo muito parecido com o que vc apresentou, só que tinha mais linhas de código haha :D. Mas pelo que testei aqui a sua implementação também apresenta essa ação de mover na diagonal, pressione A e W junto, você vera que o objeto vai pra diagonal
- Código:
if (Input.GetKeyDown (KeyCode.LeftArrow)) {
player.transform.position = new Vector2 (player.transform.position.x - velocidade, player.transform.position.y);
}
else if (Input.GetKeyDown (KeyCode.RightArrow)) {
player.transform.position = new Vector2 (player.transform.position.x + velocidade, player.transform.position.y);
}
else if (Input.GetKeyDown (KeyCode.UpArrow)) {
player.transform.position = new Vector2 (player.transform.position.x, player.transform.position.y + velocidade);
}
else if (Input.GetKeyDown (KeyCode.DownArrow)) {
player.transform.position = new Vector2 (player.transform.position.x, player.transform.position.y - velocidade);
}
FerX95- Iniciante
- PONTOS : 3347
REPUTAÇÃO : 3
Idade : 29
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
Nesse caso, eu acho que adicionar um FreezeRotation ao seu personagem deve resolver, impossibilitando ele de realizar duas ações ao mesmo tempo, e indo apenas em uma direção.
A deia é proibir ele de mudar de direção até concluir a primeira =)
A deia é proibir ele de mudar de direção até concluir a primeira =)
dfop02- Avançado
- PONTOS : 3260
REPUTAÇÃO : 2
Idade : 27
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
A movimentação é parecida com a do game The Legend of Zelda: A Link to the Past do Super Nintendo :Dhellkiller escreveu:Que tipo de jogo?
FerX95- Iniciante
- PONTOS : 3347
REPUTAÇÃO : 3
Idade : 29
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
Boa noite pessoal, consegui implementar uma movimentação em 4 direções, não esta perfeita mas já é um bom começo, abaixo segue o código :lol!:
- Código:
float eixo_x = Input.GetAxisRaw ("Horizontal");
float eixo_y = Input.GetAxisRaw ("Vertical");
if(eixo_x == 0 && eixo_y == 0){
player.velocity = new Vector2 (velocidade * eixo_x, velocidade * eixo_y);
}
if(eixo_x < 0 || eixo_x > 0){
player.velocity = new Vector2 (velocidade * eixo_x, 0);
}
if(eixo_y < 0 || eixo_y > 0){
player.velocity = new Vector2 (0, velocidade * eixo_y);
}
FerX95- Iniciante
- PONTOS : 3347
REPUTAÇÃO : 3
Idade : 29
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
ta dando erro o script
yRenas- Iniciante
- PONTOS : 1607
REPUTAÇÃO : 0
Respeito as regras :
Re: [Duvida] Sistema de movimentação de personagem em 4 direções.
yRenas escreveu:ta dando erro o script
Olá yRenas! Acabei de testar o código aqui e para a minha surpresa ele ainda funciona, acredito que você tenha esquecido de criar duas variáveis no começo do script visto que eu não o publiquei por completo. Recomendo trabalhar com valores bem pequenos na velocidade, algo como 0.5 ou 1.5
- Código:
[size=20]public [i]float[/i] velocidade;
[i]Rigidbody2D[/i] player;
[i]void[/i] Start()
{
player = GetComponent<[i]Rigidbody2D[/i]>();
}
[i]void[/i] Update()
{
[i]float[/i] eixo_x = Input.GetAxisRaw ("Horizontal");
[i]float[/i] eixo_y = Input.GetAxisRaw ("Vertical");
if(eixo_x == 0 && eixo_y == 0){
player.velocity = new [i]Vector2[/i] (velocidade * eixo_x, velocidade * eixo_y);
}
if(eixo_x < 0 || eixo_x > 0){
player.velocity = new [i]Vector2[/i] (velocidade * eixo_x, 0);
}
if(eixo_y < 0 || eixo_y > 0){
player.velocity = new [i]Vector2[/i] (0, velocidade * eixo_y);
}
}[/size]
FerX95- Iniciante
- PONTOS : 3347
REPUTAÇÃO : 3
Idade : 29
Respeito as regras :
Tópicos semelhantes
» Dúvida: Movimentação de Personagem 2D
» Duvida de movimentação de câmera 2D (Sem personagem)
» Dúvida sobre movimentação do personagem
» [DÚVIDA] Sistema/Movimentação de uma moto na Unity..
» Dúvida sobre Prefab's e Sistema de fazer o próprio personagem
» Duvida de movimentação de câmera 2D (Sem personagem)
» Dúvida sobre movimentação do personagem
» [DÚVIDA] Sistema/Movimentação de uma moto na Unity..
» Dúvida sobre Prefab's e Sistema de fazer o próprio personagem
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos