Movimentação de personagem (2D)
3 participantes
Página 1 de 1
Movimentação de personagem (2D)
Eu to migrando do JavaScript para o C# e gostaria de saber onde posso aprender um sistema de movimentação para colocar no meu jogo (2D), alguém poderia me passar algum tutorial ou algo do tipo?
(Eu tava vendo um tutorial do Paulo (We make a game) mas gostaria de ver outros estilos de códigos.)
Agradecido.
(Script que usava antes no JS)
tentei usa algo parecido no C# mas não deu muito certo haha.
PS: to começando a programar agora, então, sei male mal o básico.
(Eu tava vendo um tutorial do Paulo (We make a game) mas gostaria de ver outros estilos de códigos.)
Agradecido.
(Script que usava antes no JS)
- Código:
Personagem.velocity.x = VelocidadeX * Input.GetAxis("Horizontal");
tentei usa algo parecido no C# mas não deu muito certo haha.
PS: to começando a programar agora, então, sei male mal o básico.
willianroma- Avançado
- PONTOS : 3193
REPUTAÇÃO : 0
Respeito as regras :
Re: Movimentação de personagem (2D)
willianroma escreveu:Eu to migrando do JavaScript para o C# e gostaria de saber onde posso aprender um sistema de movimentação para colocar no meu jogo (2D), alguém poderia me passar algum tutorial ou algo do tipo?
(Eu tava vendo um tutorial do Paulo (We make a game) mas gostaria de ver outros estilos de códigos.)
Agradecido.
(Script que usava antes no JS)
- Código:
Personagem.velocity.x = VelocidadeX * Input.GetAxis("Horizontal");
tentei usa algo parecido no C# mas não deu muito certo haha.
PS: to começando a programar agora, então, sei male mal o básico.
provavelmente com o c# voce vai usar o translate
e tambem recomento este tópico para voce pegar a base do C#
https://www.schultzgames.com/t779-tutorial-aprenda-c-unity-5
Re: Movimentação de personagem (2D)
pra uma movimentação que respeita fisica, voce provavelmente vai ter que usar rigidbody2D e usar o método addForce ou velocity, pq o translate "teleporta" ignorando a fisica.
Nos standard Assets da unity tem um sistema de movimentação 2d bem interessante, voce pode importar ele e ir entendendo aos poucos o que cada coisa é e como funciona, so ir em Assets/Import Package e selecione 2D.
Nos standard Assets da unity tem um sistema de movimentação 2d bem interessante, voce pode importar ele e ir entendendo aos poucos o que cada coisa é e como funciona, so ir em Assets/Import Package e selecione 2D.
Re: Movimentação de personagem (2D)
Manawydan escreveu:pra uma movimentação que respeita fisica, voce provavelmente vai ter que usar rigidbody2D e usar o método addForce ou velocity, pq o translate "teleporta" ignorando a fisica.
Nos standard Assets da unity tem um sistema de movimentação 2d bem interessante, voce pode importar ele e ir entendendo aos poucos o que cada coisa é e como funciona, so ir em Assets/Import Package e selecione 2D.
ainda nao cheguei a trabalhar com movimentação 2d.
mas ai, agora todos os assets que vem na unity sao c# correto?
Re: Movimentação de personagem (2D)
Manawydan escreveu:pra uma movimentação que respeita fisica, voce provavelmente vai ter que usar rigidbody2D e usar o método addForce ou velocity, pq o translate "teleporta" ignorando a fisica.
Nos standard Assets da unity tem um sistema de movimentação 2d bem interessante, voce pode importar ele e ir entendendo aos poucos o que cada coisa é e como funciona, so ir em Assets/Import Package e selecione 2D.
Gostaria de ver algo mais simples no começo, como um tutorial explicando como funciona o velocity ou o addforce como utilizar e tals, pra pega o jeito mesmo, mas agradeço a dica, vou ver se consigo tirar algo do que falou :D
willianroma- Avançado
- PONTOS : 3193
REPUTAÇÃO : 0
Respeito as regras :
Re: Movimentação de personagem (2D)
Aki um exemplo de codigo de movimento 2D usando como base o script standard da unity.
Comentei tudo em pt, mas como fiz rapidamente não sei se esta funcionando.
Comentei tudo em pt, mas como fiz rapidamente não sei se esta funcionando.
- Código:
using UnityEngine;
using System.Collections;
public class SimpleMove2D : MonoBehaviour {
public float speedMove = 5f; // VELOCIDADE MOVIMENTO
public float jumpForce = 350f; // FORÇA DO PULO
public LayerMask groundLayers; // LAYERS CONSIDERADA CHAO
public Transform groundCheck; // OBJETO PRA DETECTAR SE TA NO CHAO, "PÉ"
public float groundRadius = 0.1f; // RAIO PARA DIZER SE O PLAYER ESTA NO CHÃO
private bool isOnGround; // ESTA NO CHÃO?
private Rigidbody2D rb; // RIGIDBODY 2D DO PLAYER
private bool isLookRight = true; // ESTA OLHANDO PRA DIREITA?
// PEGAR REFERENCIAS NA INICIALIZACAO
void Awake(){
// LINKA AUTOMATICAMENTE O RIGIDBODY2D DO PLAYER
// SE NÃO TIVER DA ERRO
rb = GetComponent<Rigidbody2D>();
}
// MÉTODO FISICO UTILIZADO PRA MOVIMENTOS, POIS É CONSTANTE
void FixedUpdate(){
// SETA PRA FALSE PRA PODER VERIFICAR DEPOIS
isOnGround = false;
// VERIFICA SE EXISTE COLLIDERS DENTRO DE UM CIRCULO PROXIMO AO PÉ DO PLAYER
// A POSIÇÃO INICIAL É A POSICAO DO OBJETO groundCheck
// O RAIO DO CIRCULO É O VALOR DE groundRadius
// E APENAS VERIFICA SE OS COLLIDER ESTIVEREM DENTRO DAS LAYERS groundLayers
Collider2D[] colliders = Physics2D.OverlapCircleAll (groundCheck.position,groundRadius,groundLayers);
// VERIFICA TODOS OS COLIDERS2D DENTRO DA VARIAVEL colliders
for(int i=0;i<colliders.Length;i++){
// SE EXISTE UM COLLIDER QUE SEJA DIFERENTE DO JOGADOR
if(colliders[i].gameObject != gameObject){
// ENTÃO SIGNIFICA QUE ELE TA NO CHAO
isOnGround = true;
}
}
// SE ESTA NO CHAO
if(isOnGround){
// VERIFICA SE O PLAYER ESTA APERTANDO ESQUERDA OU DIREITA
// PARA PODER RETORNA 1 PRA DIREITA E -1 PRA ESQUERDA
// PRA PODER MOVER PRA AMBOS OS LADOS
float direction = Input.GetAxisRaw("Horizontal");
// SETA VELOCIDADE DO RGIDBODY2D PRA MOVER COM BASE NA VELOCIDADE speedMove
// E NA DIREÇÃO DESEJADA
// MANTEM O VALOR DE Y PARA NÃO ALTERAR A ALTURA
rb.velocity = new Vector2(direction*speedMove,rb.velocity.y);
// SE ELE ESTIVER OLHANDO PRA ESQUERDA E A DIREÇÃO FOR PRA DIREITA
if(direction>0 && !isLookRight){
// INVERTE SUA DIREÇÃO PRA OLHAR PRA DIREÇÃO CERTA
// EXECUTA O MÉTODO Turn
Turn();
}
// SE ELE ESTIVER OLHANDO PRA DIREITA E A DIREÇÃO FOR PRA ESQUERDA
else if(direction<0 && isLookRight)
{
// INVERTE SUA DIREÇÃO PRA OLHAR PRA DIREÇÃO CERTA
// EXECUTA O MÉTODO Turn
Turn();
}
}
}
// MÉTODO PRA VIRAR O PLAYER PARA O LADO CERTO DAS TECLAS
void Turn(){
// INVERTER A DIREÇÃO, ESQUERDA --> DIREITA E VICE VERSA
// NO CASO VAI INVERTER DE TRUE --> FALSE E VICE VERSA
isLookRight = !isLookRight;
// PEGAR A ESCALA DO PLAYER
Vector3 scale = transform.localScale;
// MULTIPLICA O VALOR DE X PARA INVERTER ESQUERDA --> DIREITA ...
scale.x *= -1;
// SETA O VALOR DA ESCALA PARA O VALOR MODIFICADO
transform.localScale = scale;
}
// MÉTODO UPDATE É MELHOR PRA VERIFICAR TECLAS
void Update(){
// SE APERTA PRA PULAR, E ESTA NO CHÃO
if(Input.GetButtonDown("Jump") && isOnGround){
// NÃO ESTA MAIS NO CHAO
isOnGround = false;
// ADICIONA FORÇA PRA CIMA COM BASE NA VARIAVEL jumpForce
rb.AddForce(Vector2.up*jumpForce);
}
}
}
Re: Movimentação de personagem (2D)
Nossa, Obrigado!!
willianroma- Avançado
- PONTOS : 3193
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Movimentação do Personagem
» Movimentaçao de personagem 3d
» [RESOLVIDO]Movimentação 2D em personagem 3D
» Movimentação de Personagem No Unity 3D
» Dúvida: Movimentação de Personagem 2D
» Movimentaçao de personagem 3d
» [RESOLVIDO]Movimentação 2D em personagem 3D
» Movimentação de Personagem No Unity 3D
» Dúvida: Movimentação de Personagem 2D
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos