Parabéns pelo vídeo. Bem legal sua lógica. Num cenário que uso Rigibody seria possível implementar esse tipo de feature? Obrigado
@ProgramandoGames4 жыл бұрын
Muito obrigado Trabuk! A resposta é sim, é possível utilizar a mesma lógica usando rigidbody. No entanto, não é recomendado fazer isso modificando diretamente a velocidade, igual faço no vídeo. Como está descrito na documentação:"In most cases you should not modify the velocity directly, as this can result in unrealistic behaviour". O rigidbody é baseado numa simulação realística de modelos físicos de corpos rígidos, modificando diretamente a velocidade, vc estará "inserindo" um valor no meio da simulação, o que vai interferir nos processos e causar comportamentos inesperados. A solução é modificar diretamente a gravidade da engine de física, Physics.gravity, utilizando o mesmo calculo que faço no vídeo: Physics.gravity = ((-2 * maxHeight) / Mathf.Pow(timeToPeak, 2)) * Vector3.up; // multiplicado pelo Vector3.up pois gravity é um vetor. jumpSpeed = Physics.gravity.y * timeToPeak; Depois, pra alterar a velocidade do objeto, tem que usar a função AddForce, com o modo Force.VelocityChange, pois vc quer modificar a velocidade diretamente: AddForce(-jumpSpeed * Vector3.up, ForceMode.VelocityChange); Fiz uns testes aqui e funcionou perfeitamente, os parâmetros da altura máxima e tempo continuam funcionando como deveriam. Achei legal pois nunca tinha testado com o rigidbody, obrigado pela dúvida, foi bem divertido resolver! :D Qualquer coisa só chamar!
@kubartm4 жыл бұрын
@@ProgramandoGames Muito Obrigado. Consegui fazer funcionar, valeu mesmo.
@crijogos3 жыл бұрын
@@kubartm Olá, onde coloca a parte do: AddForce(-jumpSpeed * Vector3.up, ForceMode.VelocityChange);
@ManoAiron3 жыл бұрын
Rapaiz nunca tinha visto esse Character Controller!
@nicolasfernandodesouza78003 жыл бұрын
Eu tmb hehe, só usava o RigidBody...
@xubenka4 жыл бұрын
ficou muito bom mesmo, eu sempre tive problemas em desenvolver o pulo porque não tinha controle direito da distância máxima e sempre achava ele meio lento quando caia, mas com seu vídeo aprendi como resolver isso, parabéns :-)
@ProgramandoGames4 жыл бұрын
Valeu Xubenka! Se tiver sugestões de algo pra implementar, só falar.
@brendosantiago85794 жыл бұрын
Cara parabéns mesmo! Sou iniciante e já estava a uma semana quebrando cabeça com um pulo legal. Ganhou mais um inscrito.
@ProgramandoGames4 жыл бұрын
Valeu Brendo! Que bom que consegui te ajudar, logo vai ter mais vídeo assim desse tipo de implementação mais básica. Se tiver qualquer dúvida ou sugestão de vídeo só deixar ai! Obrigado pela força!
@glossantoss2 жыл бұрын
Usando a lógica da equação e pondo ela em forma de código ficou bem didático, não entendo muito de C# mas entendi a lógica da programação do pulo, gravidade e tempo aplicada ao código
@ProgramandoGames2 жыл бұрын
Essa é a ideia Guilherme! Conseguir entender a lógica independente da linguagem. Dessa forma vc consegur aplicar em qualquer ferramenta. Mto bom!
@ManoAiron3 жыл бұрын
E sobre sempre falarem pra fazer calculos da física da Unity no FixedUpdate?
@Anonimo987343 жыл бұрын
isso é valido apenas para rigidbody. nesse caso está usando o character controller, e fazendo coisas para simular a gravidade. e se usasse o fixed, o movimento ia ficar mais travadão.
@ManoAiron3 жыл бұрын
@@Anonimo98734 valeu!
@giovanniprosim4 жыл бұрын
Explicação muito clara e bem ilustrada com os exemplos e mudanças de parâmetro durante a execução. Foi uma boa ideia dar "voz" ao personagem ficou engraçado. Ótimo vídeo 👏👏👏
@ProgramandoGames4 жыл бұрын
Valeu giovanni!
@BeatLevelUp4 жыл бұрын
Adorei o Tutorial, Usando a Matemática fica tudo perfeito, o script que eu tinha feito, tava péssimo em relação ao pulo, isso me ajudou bastante...Preciso Urgente melhorar meus conhecimentos em Matemática.
@ProgramandoGames4 жыл бұрын
Valeu Matheus! Realmente, a matemática é a linguagem perfeita pra descrever muitas coisas dentro dos jogos. Até me deu uma ideia, talvez eu faça uma série mostrando técnicas de matemática essenciais para programadores de jogos... ; )
@orangotango_santificado_64633 жыл бұрын
me ajuda porque eu to a um tempão tentando ajeitar mas n consigo eu fiz o script direitinho mas quando coloco no unity n consigo mover o player porque isso ta acontecendo
@fuji_04314 жыл бұрын
Melhor Explicação Ganhou um inscrito e espero mais videos
@ProgramandoGames4 жыл бұрын
Valeu Fora da Caixa!
@RenanGimenez134 жыл бұрын
Mano, esse video ta PERFEITO. O melhor tutorial que eu ja vi de movimentação 2D na unity. Parabéns irmão
@Anacromidia Жыл бұрын
obrigadoo, que video foda
@portariaminiclip4128 Жыл бұрын
Excelente video
@Miguel-p6k5e5 күн бұрын
Opa mn tudo bom? Eu fiz aqui mas ele não está tendo colisão com o chão esse é o meu código using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player_Move : MonoBehaviour { CharacterController controller; Vector2 xVel; Vector2 finalVelJump; Vector2 yVel; // variaveis de pulo float xspeed; float maxHeight = 2f; float jumpSpeed; float timeTopeak = 1f; //Gravity float gravity; void Start() { controller = GetComponent(); gravity = 2 * maxHeight / Mathf.Pow(timeTopeak, 2); jumpSpeed = gravity * timeTopeak; } // Update is called once per frame void Update() { float xInput = Input.GetAxis("xInput"); xVel = xspeed * xInput * Vector2.right; yVel += gravity * Time.deltaTime * Vector2.down; if(controller.isGrounded) { yVel = Vector2.down; } if(controller.isGrounded && Input.GetKeyDown(KeyCode.Space)) { yVel = jumpSpeed * Vector2.up; } finalVelJump = xVel + yVel; controller.Move(finalVelJump * Time.deltaTime); } } acho que fiz a mesma coisa que está no video, mas se eu deixar algo passar eu realmente não estou vendo.
@raphaelgibson65553 жыл бұрын
Que vídeo maravilhoso, cara! Muito obrigado por compartilhar seu conhecimento!!
@rodrigoc38712 жыл бұрын
Muito da hora a aula, eu gostaria de fazer um pulo variável com Jump Buffering. Acho que seria top se você fizesse uma aula ensinando.
@Mr.Rafael20058 ай бұрын
O video é meio antigo, mas ainda ssim vou perguntar, pq usar o character controller e não o rigidbody? Algum tem alguma vantagem sobre o outro ou é questão de escolha?
@nightx_63994 жыл бұрын
Aula incrível 😃
@ProgramandoGames4 жыл бұрын
Valeu nightX! 😁
@Lulpe3 жыл бұрын
Muito bom o video, mas tem como fazer para quando o personagem colodir com um objeto acima dele ao inves de ele continuar indo pra cima ate o tempo acabar, ele descer assim que colidir com o objeto acima
@ProgramandoGames3 жыл бұрын
Valeu Luiz! Tem sim, nesse meu outro vídeo aqui, eu explico como fazer isso. Como eu uso o character controller nos dois, a técnica é a mesma, basta replicar. Segue o momento em que eu explico: kzbin.info/www/bejne/lYe4oXl8i62NjLM
@Lulpe3 жыл бұрын
@@ProgramandoGames Muito obrigado pela resposta,agora sim poderei continuar meu projeto :)
@majork2009 Жыл бұрын
eu fiz igual a o video e n foi alguem sabe se teve alguma mudança na unity? queria uma ajuda
@ProgramandoGames Жыл бұрын
fala major, o que acontece com o seu?
@majork2009 Жыл бұрын
@@ProgramandoGames oi oi e que o código pra velocidade y n estava funcionando no caso Vector.down Cabei usando yvelocity.y -= gravidade × time deltatime
@eduardothadeu49594 жыл бұрын
Alguem sabe resolver o meu problema? aq ele n reconhece o Vector2 n sei se perdi alguma parte mas ele n muda a cor ele fica em branco como se fosse qualquer
@ProgramandoGames4 жыл бұрын
Fala Eduardo, tudo bem? Isso é um bug do visual studio, que não consegue detectar o Unity, vi que tem acontecido com algumas pessoas e a solução pra resolver isso é meio desconhecida ainda. Isso também pode acontecer se vc colocou acento ou caracteres especiais no nome do seu projeto Unity. Verifique se é isso. Qualquer coisa só falar, desculpe a demora em responder, as vezes me perco nos comentários e acabo deixando um ou outro passar.
@eduardothadeu49594 жыл бұрын
@@ProgramandoGames de boa kkkkk eu fui tentar dps e foi mt obg pelo tutorial e pelo suporte
@davidffortesmeireles53283 жыл бұрын
pq vc nao coloca xdirection e ydirection ?acho que fica mais facil de entender assim
@ProgramandoGames3 жыл бұрын
Olá david, tudo certo? De quais variáveis vc está falando?
@davidffortesmeireles53283 жыл бұрын
@@ProgramandoGames das vector2 xvelocity e yvelocity
@SoGabrielMesmo3 жыл бұрын
alguém me da uma força, eu fiz o codigo todo certo e ele está "funcionando", tanto que o visual code nem o unity reconhecem erro nenhum, mas não acontece nada quando eu aperto nos botões, que era pra reconhecer como "a" ou "d", nada acontece
@brendosantiago85794 жыл бұрын
Cara estou com uma duvida, como faço para o Character Controller colidir com um tillemap? Só consegui fazer ele colidir com o SPRITE igual tu criou aí, mas quando tento no TILEMAP ele não colide.
@ProgramandoGames4 жыл бұрын
Obrigado pela pergunta Brendo! Verifique se o boxcollider que ta no tile é 2D, se for, pode ser isso, pq o character controller usa uma capsule, que é 3D, entao eles nunca vao colidir pq falta a dimensão z no collider do tile. Caso seja uma boxcollider2d mesmo, trocando pela boxcollider deve resolver : ) depois me diz se funcionou!
@RenanGimenez134 жыл бұрын
Como faz pulo duplo?
@Milgatte4 жыл бұрын
faz um tutorial de como fazer um movimento tipo de uma flecha jogada pra cima e batendo bem onde foi calculada sabe
@ProgramandoGames4 жыл бұрын
Bem legal essa ideia Megatte! Com certeza farei um vídeo sobre isso. Valeu pela força!
@StevonFerreira9 ай бұрын
porque você não coloca o script na descrição?
@fuji_04314 жыл бұрын
Tem como ensinar a fazer uma camera de 3 pessoa como Word War Z ?????
@ProgramandoGames4 жыл бұрын
Estou montando uma lista de tutorias pra fazer e esse tá no meio ; ) Só aguardar que logo sai!
@fuji_04314 жыл бұрын
@@ProgramandoGames Vlw
@kilpkgames97703 жыл бұрын
Melhor tutorial do assunto....
@fuji_04313 жыл бұрын
Mano, o meu pulo não ta funcionando, poderia dar uma olhada no codigo Vector2 endvelocity; Vector2 X_velocity; public float speedMax; public float speed; Vector2 direction = Vector2.zero; Vector2 current; Vector2 Y_velocity; // jumo variable public float maxHeight = 5f; public float gravity; public float speedjump; public float timemax = 4f; void Start() { gravity = (2 * maxHeight) / Mathf.Pow(timemax , 2); speedjump = gravity * timemax; } void Update() { move(); jump(); } public void move() { float Movex = (Input.GetAxis("Horizontal")); direction = new Vector2(Movex, 0).normalized; X_velocity = Vector2.SmoothDamp(X_velocity, direction * speedMax, ref current, speedMax / speed); transform.position += (Vector3)X_velocity * Time.deltaTime; } public void jump() { Y_velocity += gravity * Time.deltaTime * Vector2.down; if (Input.GetButtonDown("Jump")) { Y_velocity = speedjump * Vector2.up; } }
@aguiarlucas4553 жыл бұрын
pq minhas palavras nao ficam coloridas que nem as suas?
@dafferman4 жыл бұрын
Vc poderia fazer um tutorial de como colocar esse rastro? Ele ficou muito bom cara!
@mrztikki3 жыл бұрын
o meu nao roda nao nao reconhece o script
@relativistico37944 жыл бұрын
Você usou cálculos de física 🙀 amei
@ProgramandoGames4 жыл бұрын
Física é vida 😁
@beatrizmagri94844 жыл бұрын
em um notebook d 2009 da pra fazer ? ano q vem eu compro outro vídeo muito bom mesmo parabéns
@ProgramandoGames4 жыл бұрын
Olá Beatriz! Nessa página vc consegue baixar todas as versões anteriores do Unity: unity3d.com/pt/get-unity/download/archive Tenta ir comparando as versões com os requisitos do seu notebook, quando encontrar alguma próxima instala e vê se roda :D Caso dê algum problema de compatibilidade com o tutorial, só me avisar que eu te ajudo. Até o/
@joshd42904 жыл бұрын
estou tendo um problema, após eu criar o if (controller.isGrounded) o personagem não consegue mais pular, ele só sobe bem pouco e volta pro chão, provavelmente a resposta é bem besta, mas eu to a quase 2h procurando a resposta e não achei, por favor me ajude
@fuji_04313 жыл бұрын
O meu nem sai do chão kkkkk to a 3 dias tentando arrumar isso
@dafferman4 жыл бұрын
Bom demais
@ProgramandoGames4 жыл бұрын
Valeu Dafferman! :D
@RenanGimenez134 жыл бұрын
A colisão só funciona se o colisão do chão for 3D?
@vanboorish80653 жыл бұрын
valeuu
@matacalangamineiro92713 жыл бұрын
só faltou disponibilizar o código
@pebadiario2 жыл бұрын
Amigo, não estou criticando o seu trabalho, mas porque você não faz a movimentação simplesmente Criando uma variável do tipo float para definir a velocidade, e usa o if Input.getkey e coloca como criterio um transform.translate?