Essa parte de polimento é um diferencial dos seus tutoriais, já assisti muito video que só mostravam o "caminho feliz" da implementação e quando tentava fazer sozinho esbarrava nesses problemas de colisão com teto ou qualquer tipo de refinamento com relação a colisão. Excelente video, muito bem implementado e usando muito bem funções como Lerp e Clamp.
Mano o video ficou muito foda, tive que voltar algumas vezes mas consegui me organizar, adorei o jeito que você separou o video, simplificou muito. Mas aqui vou te dar uma dica, tenta ir com mais calma ou dar um tempo, pra gente que nao entende ainda muito bem a lógica, copiar o codigo. Tirando isso ficou muito foda irmao! Sucesso
cara parabéns de verdade, vc explica de uma maneira perfeita e muito fácil de aprender, eu tenho um pouco de dificuldade em programação mas me senti muito confortável na sua aula! Continue assim, vc tem muito a crescer e essa comunidade precisa de pessoas como vc!!!
Wooowww valeu mesmo Alexandre! Muito obrigado por esse feedback! Muito feliz em saber tudo isso, tbm espero continuar crescendo e podendo compartilha esse conhecimento com vcs. Abraço!
Valeu DDMAX! Tenho anotado aqui esse tutorial, não só esse como mtos outros. Infelizmente ainda nao trabalho só com o canal entao to me organizando pra ir fazendo 😁
Obrigado pela sua aula, o seu canal está me ajudando muito! Sou iniciante na Unity e estou tendo muitas dificuldades no uso dessa ferramenta, mas o seu conteúdo está me ajudando muito nessas dificuldades, só tenho que agradecer. Continue com esse seu belo trabalho.
Cara gostei muito desse canal, seus vídeos são muito bons e trazem bastante conhecimento. Gostaria apenas de fazer uma observação que talvez seria útil. Em um outro canal sobre tutorais de desenvolvimento com a Unity, o youtuber ensina a fazer também o processo de movimentação do personagem porém, usando o componente Rigidbody ao invés de trabalhar com o Transform. Ele explica que na Unity, componentes tem Hierarquia, e o Transform dependendo da situação tem uma hierarquia maior que Boxcollider de objetos, fazendo com que sejam atravessados pelo objeto movimentado, gerando bugs. O mesmo não acontece com o Rigidbody pois, pode se aplicar uma força ao objeto que já tem física (como gravidade) pronta herdada do Rigidbody sendo que o mesmo está abaixo hierarquicamente em relação ao Boxcollider. É até mais fácil de se trabalhar com RIgidibody pq vem tudo pronto. Espero que tenha sido uma dica útil.
Fala Babadook! Obrigado pelo feedback! :D Muito boa observação. Estou para fazer um vídeo só falando sobre essa questão de usar Transform versus usar Rigidbody, realmente muita gente pergunta e tem dúvidas, principalmente quando destaco que a maioria das minhas implementações não usam rigidbody. Vou dar uma resumida nessa discussão só pra não ficar em branco. Como você bem disse, o mais importante de uma implementação, em primeiro lugar, é ser livre de bugs e ser eficiente do ponto de vista de processamento e estruturação de código. É possível obter esses dois objetivos tanto trabalhando com rigidbody quanto trabalhando apenas com Transform. Então qual utilizar? Bom, ai depende de vários fatores. Um fator, por exemplo, é a necessidade do game. O Rigidbody é bem robusto e complexo, ele simula a física realisticamente e tem muitos parâmetros para serem ajustados. É mais comum jogos baseados em física (physic-based) precisarem de física realista e precisa. Te digo que em mais de 6 anos no desenvolvimento de jogos, nunca precisei desenvolver nada que utilizasse rigidbody. Sempre é possível fazer uma implementação mais simples sem utilizá-lo. Outro fator é o conhecimento. O rigidbody não é universal e não está presente em todas as engines, o que acaba limitando pro contexto do Unity. É importante ser livre dessas implementações e saber fazer as coisas isoladas. A indústria utiliza várias ferramentas diferentes e muitas não possuem uma engine de física built-in. Resumindo, o rigidbody tem seu papel bem definido e deve ser utilizado quando necessário. Ao meu entender e experiência, utilizá-lo nessas pequenas implementações que eu trago para o canal não agrega muito quando se trata daqueles dois objetivos iniciais; evitar bugs e performance. Em geral é isso, caso queira continuar a discussão é só falar ai :) Abraços!
@@ProgramandoGames Muito obrigado por responder meu comentário. A observação que você fez sem dúvida é bem completa para explicar a principal diferença entre os dois. Acredito fielmente que utilizar apenas código (simples na maioria das vezes) para desenvolver coisas como física, sem duvida é a melhor solução quando se trata de dependência de componentes da Engine. Acredito que seus conteúdos relacionados visam não só apenas mostrar como se cria um game, mas também aprofundar o conhecimento dos desenvolvedores nos fundamentos do desenvolvimento de games: Aprender a simular (via código ou não) a gravidade em um jogo. Assim como, entender a essência dessa simulação, seus padrões e características fundamentais. Me lembro de assistir em um canal grigo de programação em C#, o desenvolvimento de uma inteface com um objeto animado seguido de COLISÕES, tudo via código. Parecido com aquela tela de DVD com passa um tempo sem mexer. Vi e pensei: "Eis um Box Collider rsrs". Na Unity, não preciso criar um, basta arrastar o componente se necessário. Mas, se um dia precisasse, teria ao menos uma noção de como deveria ser feito graças a esse video. Por isso, gostei muito deste canal. Acredito que usar um ou outro realmente vai depender do projeto. De qualquer forma, seria bom falar dos rigidbody assim como outros componentes da Engine. Apenas afim de mostrar que existem várias formas de se chagar a um determinado resultado e isso cabe ao desenvolvedor decidir qual a melhor para seu projeto. Um grande abraço amigo!
Melhor script que já vi no UA-cam para esse tipo de movimentação, sem brincadeira, todos os outros ficavam com uma física bem duvidosa... Parabéns pelo conteúdo de qualidade! Ganhou mais um inscrito =D
Apesar d ter dois anos o video ja ainda muito bom. Primeiro video desse canal q estou vendo mas to indo ver outros, gostei muito, espero q traga muito conteudo tao bom quanto esse.
Já cheguei me inscrevendo no canal deixando o like, só pela o motivo de querer explicar tintim por tintim de cada processo, oremos por mais vídeos assim.
@@ProgramandoGames não tenho nada a criticar nem reclamar, mais gostaria de tirar uma dúvida, escrevir o código bem direitinho letra por letras ainda revisei todo, mais infelizmente meu quer só anda na diagonal pra trás mesmo eu pressionando quer tecla ele vai na diagonal para trás, conferi a rotação do player os input mais mesmo assim continua, poderia me ajudar?
Muito bom o vídeo! Espero que continue fazendo vídeo pois a maneira como você explica e tem cuidado nos pormenores é muito rara.. Obrigado pela ajuda :)
Valeu cara! Vou continuar fazendo os tutoriais sim. No momento estou a alguns dias sem postar na frequência que gostaria, pois estou começando um novo projeto que tá me tomando bastante tempo, mas logo sai mais vídeo : )
O melhor tutorial, e não é puxão de saco, vou dizer os pontos que esse foi diferente da maiorai que assisti, o uso da matematica e a explicação dela em si ... eu trabalho com programação a um bom tempo, mas jogos é algo que nunca me aproximei, a maioria dos videos que assisti, fora os que apresentaram o uso do Standard Pack para coisas como FPSController, os demais criaram mecanicas um pouco incorretas, ou no minimo que perdiam um pouco a "naturalidade", mas preciso dizer algo, que talvez eu venha a mandar um pull-request em seu repositório, quando NÃO estiver for isGrounded a direção do pulo não deveria poder ser controlada .... Deixei-me explicar melhor, quando pressiono para pular, mas sem estar movimento o personagem é possivel no momento proximo ao maxJumpHeight pressionar o direciona para qualquer direção, parecendo que o personagem esta "voando". Ainda sim como eu disse, de resto é o melhor video, você fala muito bem, tem a compreensão que a média de 10 min é mais que suficiente para coisas especificas e aulas. PARABÉNS!
Muito obrigado pelo feedback hipnisreturn2. Muito boa sua observação sobre o pulo. Essa é uma questão que estava na versão inicial do tutorial, tinha duas variáveis pra controlar o atrito no chão e no ar. Eu removi posteriormente pois acabava deixando a explicação mais longa e não acrescentava muito ao objetivo principal do vídeo. Estou pensando em fazer um outro vídeo pra aprimorar o movimento, adicionando a aceleração, controle no ar, wall jump, double jump etc. Abraços!
Cara, sera que vc poderia fazer um video criando uma camera uma pouco diferente ? Uma camera que rotacione um objeto, limitando os para cima e para baixo... E eu gostaria de fazer um zoom com touch (talvez seja uma ideia para um video separado) A minha ideia é Um jogo de turno onde em uma arena tem sim dois players, cada um com sua equipe, e elas ficam em lados opostos, uma em cada extremidade da arena. Aí eu queria fazer a camera rotacionar mostrando os dois times..
ola, boa tarde, muito bacana seu video, sou Marcelo, estou iniciando uma curso de desenvolvimento de games. esse metodo da camrá pode ser usado tambem para 2D? esse teu script no lugar de 3d substituir por 2D?
Cara parabéns !! estou iniciando na Unity e até agora teu Tutorial foi o melhor que encontrei ! Minha duvida é como eu poderia substituir este cilindro por um Avatar para poder colocar as animações
É possível também Bruno, isso vai da mecânica que vc pretendo pro seu jogo. No counter-strike por exemplo é possível se movimentar no ar. Caso queira fazer o contrário, basta criar uma flag anulando o movimento durante o pulo, assim impede q se movimente e consequentemente ele vai cair na posição.
1º Sobre a velocidade de ao invés de criar duas variáveis eu posso criar somente uma com o nome "speed" e ao invés de multiplicar por strafe e forward, eu posso multiplicar por esta variável apenas? 2º Sobre a gravidade a variavel "jumpForce" teria a mesma função da "jumpSpeed"? ou não?
Fala AleFeroiz, blz! Não sei se entendi exatamente, mas fiz um teste aqui. Coloquei o player em cima de um objeto, depois coloquei outro acima da cabeça. Nesse caso a colisão com o teto continua funcionando corretamente. Era isso? Se não for, fala ai pra gente resolver :D
@@ProgramandoGames Era isso msm, eu tbm testei e vi q n tinha errado, eu n entendi foi nada do porquê não deu erro mas dps vo tenta observa de novo :D (E faz mais vídeos de tipo lanterna de exemplo, seus tutoriais são incríveis!)
Gostei muito, vc poderia fazer OUTRO vídeo mais demorado para eu poder compreende melhor, aí vc explica de uma forma diferente, como se vc estivesse falando com uma pessoa q n sabe nada de programação
Fala Kakitus Gamer (curti o nome kkkk), tudo certo! Estou trabalhando numa série de FPS pro canal, deve sair por volta de março/abril do ano que vem, tá ficando bem legal! :D Sobre a parte online, ainda não tenho planos, mas com certeza é uma excelente ideia pro futuro! Muito obrigado pela pergunta. Abração!
É normal a câmera mover mais do que devia ? a minha fica arrastando um pouco sempre que mexo, e se mexo muito arrasta ainda mais, tirando isso ótimo tutorial
o jogo meu ficou estranho pq ele so vai em um angulo, se eu tiver olhando para a esquerda e apertar para frente ele vai para um lado aleatorio, podem arrumar isso pls?
Fala Édipo, eu dei uma parada por causa de acontecimentos pessoais, tava praticamente impossível produzir conteúdo pro canal. Agora que tudo se acertou, próximos meses estarei full time dedicado ao canal o/
A mecânica de pulo que utilizo é simplesmente um add force no eixo y do vector3 do objeto Poderia me explicar pq não ultilizar esse metodo e pq oque você fez no vídeo é melhor?
Sei que o vídeo é antigo e acompanhei o tutorial e deu certinho! Porém gostaria de tirar uma dúvida, ao eu chegar com o meu personagem próximo de alguma porta, por exemplo, a câmera simplesmente atravessa e eu consigo ver do outro lado. Sabe como eu posso resolver? Edit: Consegui resolver, galera! É bem simples, só ir no elemento ''Main Camera'' e ir até a opção ''Clipping Planes'' e colocar a opção 0.1. :)
Video mt bom, mas nn sei pq o meu nn deu certo, ele nn anda pra onde ta olhando, talvez seja pq eu fiz a movimentação de outro jeito (com rigidbody), se for por isso ensina a fazer sem character controller
Por algum motivo, o character controller só está reconhecendo o isGrounded como true se eu estou em movimento, se meu player fica parado ele considera false. Sabe me informar se isso aconteceu com você também e como contornou isso? Parabéns pelos vídeos, são muito bons!
Valeu Mario! Isso aconteceu comigo sim, vou explicar por que acontece e como resolvi. Usando o caracter controller, a colisão só ocorre quando o collider do player é empurrado contra outro collider. É comum nessas implementações de movimento, que a velocidade vertical do player seja zerada quando toca o chão. O problema é que se você fizer usando o character controller, o player vai ficar como se estivesse "flutuando" no chão, pois não há o contato entre o collider do player e do chão, então o isGrounded nunca será true. Pra resolver isso, é necessário setar a velocidade vertical sempre um valor diferente de zero mesmo que ele esteja no chão, pra ele empurrar o player para baixo e encostar no collider. Ali onde eu faço "if ( isGrounded )" 5:00, eu seto a velocidade vertical pra Vector.down (0, -1). Tenta fazer duas coisas: 1 - alterar o valor do skinWitdh, isso pode influenciar, pois quanto menor, mais força vc tem que fazer no player pro collider encostar no chão e tornar o "isGrounded = true". 2 - se o primeiro não resolver, vai aumentando um pouco o valor da velocidade vertical no if isGrounded (por exemplo, 1.2f * Vector.down, 1.3f * Vector.down, 1.4f * Vector.down etc). Caso nenhuma das formas funcionar, me avise que dou uma explorada pra saber se tem algum outro problema que não previ.
oi amigo to começando agora com isso de criação no unity mas fica dando erro no vector3 e ele nao muda de cor igual o seu isso é um script separado ou o q?
Fala zé! A primeira coisa que vc precisa fazer é checar se o player está se movendo, obviamente, pq vc só corre se já está em movimento hehehe. Coloca uma condição que verifica que se o valor absoluto de strafeInput ou forwardInput são maiores que 0. Seria algo assim: if( Mathf.Abs( strafeInput ) >= 0 || Mathf.Abs( forwardInput ) >= 0) isMoving = true; else isMoving = false; Garantido que o player está se movendo, agora vc checa se o player está pressionando shift. Se estiver, vc muda o valor das speeds pra um valor maior. Você pode definir algo como walkingSpeed e runningSpeed. if( isMoving && Input.GetKey(KeyCode.LeftShift)) speed = runningSpeed; else speed = walkingSpeed; Qualquer coisa só falar!
cara eu tenho uma duvida que eu to começando no unity agora e eu não sei literalmente nada e quis pra começar leve tentar fazer um feijão movimentar mas o maior problema é que: 1 - o feijão não se movimenta 2 - o solo não é solido nem o personagem então o personagem atravessa o chão 3 - mesmo com o objeto apropriado chamado "terrain" (que eu acredito q ja venha com colisão oncluida) ainda assim continua atravessando se vc tiver algum tutorial para esse basico e puder me passar pq eu realmente não consegui entender nada de outros tutoriais. edit: eu percebi que ao inves de cair ele esta subindo.
Alguem me ajuda pfv, eu escrevo o script tudo certinho, mas na hora de testar, não acontece absolutamente nada, alguem sabe o que ta havendo? Nao tem nenhum erro nadaa...
"All compiler errors have to be fixed before you can enter playmode!" Alguém sabe resolver? Porque eu coloquei os codigos scripts certinho mais quando eu vou testar da esse erro, caso alguém saiba oque ocasionou e como resolver eu agradeceria e muito!
Seu tutorial foi perfeito, mas poderia me ajudar em uma coisa? eu fiz tudo certinho do script da camera, porém quando eu vou dar play no jogo automaticamente o script da camera some da "Main Camera" e n fica em primeira pessoa, eu ja fiz varias vezes e todas o script da camera sempre some e volta pra pasta scripts
Gostei muito do video mas eu tentei colocar para que o personagem corra ao apertar o shift, ele consegue pular enquanto corre para traz e pros lados, mas nao consegue pular quando esta correndo pra frente e eu nao sei pq, eu só adicionei uma variavel run, e coloquei ela na soma que determina o movimento (forward e strafe), quando aperto shift ele aumenta o valor da variavel e quando solta ele diminui pro normal. Se puder me ajudar eu agradeceria muito.
Fala John, Veja na hora de pegar o input Horizontal e Vertical se não está invertido. Ou mesmo na hora de multiplicar os inputs, se você não trocou os eixos. Qualquer coisa me fala ai :)
Cara, me ajuda! eu tentei fazer meu proprio script so que saiu errado, o W e S adiconavam e retiravam do valor Z e o D e A adicionavam no valo x. depois copiei seu script e continuou a msm coisa. o q eu faço?
Fala pessoal!
Lancei meu curso. Nele ensino como criar um jogo FPS completo! Confere no link => go.hotmart.com/B85475801M
Vc tem algum curso ? seja gratuito ou pago ? gostei mt da sua metodología !!
@@ycharlesrd9762
rotationX += horizontalDelta * Time.deltaTime;
rotationY += verticalDelta * Time.deltaTime;
Essa parte de polimento é um diferencial dos seus tutoriais, já assisti muito video que só mostravam o "caminho feliz" da implementação e quando tentava fazer sozinho esbarrava nesses problemas de colisão com teto ou qualquer tipo de refinamento com relação a colisão. Excelente video, muito bem implementado e usando muito bem funções como Lerp e Clamp.
Mano o video ficou muito foda, tive que voltar algumas vezes mas consegui me organizar, adorei o jeito que você separou o video, simplificou muito.
Mas aqui vou te dar uma dica, tenta ir com mais calma ou dar um tempo, pra gente que nao entende ainda muito bem a lógica, copiar o codigo.
Tirando isso ficou muito foda irmao! Sucesso
Valeu Greggy! Essa questão do tempo é algo que preciso ir adaptando e melhorando. Muito obrigado pelo feedback!
cara parabéns de verdade, vc explica de uma maneira perfeita e muito fácil de aprender, eu tenho um pouco de dificuldade em programação mas me senti muito confortável na sua aula! Continue assim, vc tem muito a crescer e essa comunidade precisa de pessoas como vc!!!
Wooowww valeu mesmo Alexandre! Muito obrigado por esse feedback! Muito feliz em saber tudo isso, tbm espero continuar crescendo e podendo compartilha esse conhecimento com vcs.
Abraço!
Você explica muito bem, merecia mais reconhecimento.
Poderia fazer um tutorial com a câmera em 3° pessoa, gostei do jeito que você faz.
Valeu DDMAX! Tenho anotado aqui esse tutorial, não só esse como mtos outros. Infelizmente ainda nao trabalho só com o canal entao to me organizando pra ir fazendo 😁
o cara gasta tempo e dedicação pra trazer uma bela video aula ainda tem gente que dar deslike parabéns ta bem explicado
Obrigado pela sua aula, o seu canal está me ajudando muito!
Sou iniciante na Unity e estou tendo muitas dificuldades no uso dessa ferramenta, mas o seu conteúdo está me ajudando muito nessas dificuldades, só tenho que agradecer. Continue com esse seu belo trabalho.
Cara gostei muito desse canal, seus vídeos são muito bons e trazem bastante conhecimento. Gostaria apenas de fazer uma observação que talvez seria útil. Em um outro canal sobre tutorais de desenvolvimento com a Unity, o youtuber ensina a fazer também o processo de movimentação do personagem porém, usando o componente Rigidbody ao invés de trabalhar com o Transform. Ele explica que na Unity, componentes tem Hierarquia, e o Transform dependendo da situação tem uma hierarquia maior que Boxcollider de objetos, fazendo com que sejam atravessados pelo objeto movimentado, gerando bugs. O mesmo não acontece com o Rigidbody pois, pode se aplicar uma força ao objeto que já tem física (como gravidade) pronta herdada do Rigidbody sendo que o mesmo está abaixo hierarquicamente em relação ao Boxcollider. É até mais fácil de se trabalhar com RIgidibody pq vem tudo pronto. Espero que tenha sido uma dica útil.
Fala Babadook! Obrigado pelo feedback! :D
Muito boa observação. Estou para fazer um vídeo só falando sobre essa questão de usar Transform versus usar Rigidbody, realmente muita gente pergunta e tem dúvidas, principalmente quando destaco que a maioria das minhas implementações não usam rigidbody. Vou dar uma resumida nessa discussão só pra não ficar em branco.
Como você bem disse, o mais importante de uma implementação, em primeiro lugar, é ser livre de bugs e ser eficiente do ponto de vista de processamento e estruturação de código. É possível obter esses dois objetivos tanto trabalhando com rigidbody quanto trabalhando apenas com Transform. Então qual utilizar? Bom, ai depende de vários fatores.
Um fator, por exemplo, é a necessidade do game. O Rigidbody é bem robusto e complexo, ele simula a física realisticamente e tem muitos parâmetros para serem ajustados. É mais comum jogos baseados em física (physic-based) precisarem de física realista e precisa. Te digo que em mais de 6 anos no desenvolvimento de jogos, nunca precisei desenvolver nada que utilizasse rigidbody. Sempre é possível fazer uma implementação mais simples sem utilizá-lo.
Outro fator é o conhecimento. O rigidbody não é universal e não está presente em todas as engines, o que acaba limitando pro contexto do Unity. É importante ser livre dessas implementações e saber fazer as coisas isoladas. A indústria utiliza várias ferramentas diferentes e muitas não possuem uma engine de física built-in.
Resumindo, o rigidbody tem seu papel bem definido e deve ser utilizado quando necessário. Ao meu entender e experiência, utilizá-lo nessas pequenas implementações que eu trago para o canal não agrega muito quando se trata daqueles dois objetivos iniciais; evitar bugs e performance.
Em geral é isso, caso queira continuar a discussão é só falar ai :)
Abraços!
@@ProgramandoGames Muito obrigado por responder meu comentário. A observação que você fez sem dúvida é bem completa para explicar a principal diferença entre os dois.
Acredito fielmente que utilizar apenas código (simples na maioria das vezes) para desenvolver coisas como física, sem duvida é a melhor solução quando se trata de dependência de componentes da Engine.
Acredito que seus conteúdos relacionados visam não só apenas mostrar como se cria um game, mas também aprofundar o conhecimento dos desenvolvedores nos fundamentos do desenvolvimento de games: Aprender a simular (via código ou não) a gravidade em um jogo. Assim como, entender a essência dessa simulação, seus padrões e características fundamentais.
Me lembro de assistir em um canal grigo de programação em C#, o desenvolvimento de uma inteface com um objeto animado seguido de COLISÕES, tudo via código. Parecido com aquela tela de DVD com passa um tempo sem mexer. Vi e pensei: "Eis um Box Collider rsrs". Na Unity, não preciso criar um, basta arrastar o componente se necessário. Mas, se um dia precisasse, teria ao menos uma noção de como deveria ser feito graças a esse video.
Por isso, gostei muito deste canal. Acredito que usar um ou outro realmente vai depender do projeto. De qualquer forma, seria bom falar dos rigidbody assim como outros componentes da Engine. Apenas afim de mostrar que existem várias formas de se chagar a um determinado resultado e isso cabe ao desenvolvedor decidir qual a melhor para seu projeto.
Um grande abraço amigo!
Cara, excelente tutorial! Nossa, tirou todas minhas dúvidas que não tinha achado em outros tutoriais.
Obrigado Luiz! :D
Melhor script que já vi no UA-cam para esse tipo de movimentação, sem brincadeira, todos os outros ficavam com uma física bem duvidosa... Parabéns pelo conteúdo de qualidade! Ganhou mais um inscrito =D
Parabéns pela objetividade e didática!!! Conteúdo muito interessante. Continue postando!!! Parabéns.
Apesar d ter dois anos o video ja ainda muito bom. Primeiro video desse canal q estou vendo mas to indo ver outros, gostei muito, espero q traga muito conteudo tao bom quanto esse.
Obrigado Fourbricio! Estou voltando a produzir vídeos para o canal, próximos meses vou lançar, além de outras novidades! :D Seja bem vindo!
@@ProgramandoGames ja deixei o sininho ativo kakaka
Oi, eu não estou conseguindo fazer a movimentação do player ir para onde a câmera aponta
Já cheguei me inscrevendo no canal deixando o like, só pela o motivo de querer explicar tintim por tintim de cada processo, oremos por mais vídeos assim.
Valeu Alexandre 😁
@@ProgramandoGames não tenho nada a criticar nem reclamar, mais gostaria de tirar uma dúvida, escrevir o código bem direitinho letra por letras ainda revisei todo, mais infelizmente meu quer só anda na diagonal pra trás mesmo eu pressionando quer tecla ele vai na diagonal para trás, conferi a rotação do player os input mais mesmo assim continua, poderia me ajudar?
Muito bom o vídeo! Espero que continue fazendo vídeo pois a maneira como você explica e tem cuidado nos pormenores é muito rara.. Obrigado pela ajuda :)
Valeu cara!
Vou continuar fazendo os tutoriais sim. No momento estou a alguns dias sem postar na frequência que gostaria, pois estou começando um novo projeto que tá me tomando bastante tempo, mas logo sai mais vídeo : )
Muito bom o vídeo. Você consegue explicar de maneira objetiva e fácil.
Cara que contúdo incível, estou aprendendo muito com seus vídeos !
Didático. Interessante trazer a explicação das bibliotecas e de fato do C# em Unity... +1 Sub!
melhor video aula que assitir ,muito bem explicado.
Valeu!
Muito obrigado, me ajudou a resolver alguns problemas q pareciam insolucionáveis
Valeu ajudou pra caramba deveria ter mais reconhecimento
Muito obrigado 2bits!
nunca vi um tutorial tão top mano PARABENS
tutorial muito bem explicado e de qualidade parabéns,e obrigado!
O melhor tutorial, e não é puxão de saco, vou dizer os pontos que esse foi diferente da maiorai que assisti, o uso da matematica e a explicação dela em si ... eu trabalho com programação a um bom tempo, mas jogos é algo que nunca me aproximei, a maioria dos videos que assisti, fora os que apresentaram o uso do Standard Pack para coisas como FPSController, os demais criaram mecanicas um pouco incorretas, ou no minimo que perdiam um pouco a "naturalidade", mas preciso dizer algo, que talvez eu venha a mandar um pull-request em seu repositório, quando NÃO estiver for isGrounded a direção do pulo não deveria poder ser controlada .... Deixei-me explicar melhor, quando pressiono para pular, mas sem estar movimento o personagem é possivel no momento proximo ao maxJumpHeight pressionar o direciona para qualquer direção, parecendo que o personagem esta "voando". Ainda sim como eu disse, de resto é o melhor video, você fala muito bem, tem a compreensão que a média de 10 min é mais que suficiente para coisas especificas e aulas. PARABÉNS!
Muito obrigado pelo feedback hipnisreturn2. Muito boa sua observação sobre o pulo. Essa é uma questão que estava na versão inicial do tutorial, tinha duas variáveis pra controlar o atrito no chão e no ar. Eu removi posteriormente pois acabava deixando a explicação mais longa e não acrescentava muito ao objetivo principal do vídeo. Estou pensando em fazer um outro vídeo pra aprimorar o movimento, adicionando a aceleração, controle no ar, wall jump, double jump etc.
Abraços!
Parabéns pelo vídeo muito bem explicado. 👍
Muito obrigado pelo tutorial, aprendi bastante hoje.
Tenha uma boa semana
Muuuuuuito bem explicado cara vlw faço o curso da danki mas nem se compara com a sua explicação seloko
Melhor explicação sobre esse assunto que já vi
cara vlw vc me ajudou muito faz tempo que procuro um script de Player
Tutorial muito bom, só tive que pausar umas 100 vezes pk vc é rápido d+ kkkkkkkk
Excelente tutorial.
Valeu cara! 😁
Esse cara é muito incrível na programação velho e ainda me ajudo
o meus comando nao ficam verde
dps da erro no script oque pode ser ?
escrevo certo mais nao fica verde
Cara, sera que vc poderia fazer um video criando uma camera uma pouco diferente ?
Uma camera que rotacione um objeto, limitando os para cima e para baixo...
E eu gostaria de fazer um zoom com touch (talvez seja uma ideia para um video separado)
A minha ideia é
Um jogo de turno onde em uma arena tem sim dois players, cada um com sua equipe, e elas ficam em lados opostos, uma em cada extremidade da arena.
Aí eu queria fazer a camera rotacionar mostrando os dois times..
Tutorial incrível
cara, muito bom, parabéns!
Muito obrigado 😁
mano funcionou direitinho muito obrigado vc e foda
ola, boa tarde, muito bacana seu video, sou Marcelo, estou iniciando uma curso de desenvolvimento de games. esse metodo da camrá pode ser usado tambem para 2D? esse teu script no lugar de 3d substituir por 2D?
o meu n tem o player escript : (
show, top top
Vc tem algum video Acrescentando a arma no game?
Cara parabéns !! estou iniciando na Unity e até agora teu Tutorial foi o melhor que encontrei !
Minha duvida é como eu poderia substituir este cilindro por um Avatar para poder colocar as animações
didática top irmão, bom vídeo, esta de parabéns .
quando se anda na diagonal você fica com mais velocidade, como resolver isso?
Vídeo sensacional, melhor que muitos vídeos gringos
cara como faz para que o visual studio corrija meus codigo, porque quando troquei de pc isso simplesmente sumiu
vc podia fazer o pulo que o player vai pra onde pulou e n ele fica planando e andando no ar é contra a lei da física
É possível também Bruno, isso vai da mecânica que vc pretendo pro seu jogo. No counter-strike por exemplo é possível se movimentar no ar. Caso queira fazer o contrário, basta criar uma flag anulando o movimento durante o pulo, assim impede q se movimente e consequentemente ele vai cair na posição.
Acabei de aplicar, funcionando perfeitamente
Krl mn, só consegui entender com o seu tutorial
Muito Bom, E você ensina Muito Bem Otimo tutorial!!
Muito obrigado 😁
Que video perfeito mano, parabéns
ou como que colocar o script player ??? eu aida n vi o video entero
muito top o canal
1º Sobre a velocidade de ao invés de criar duas variáveis eu posso criar somente uma com o nome "speed" e ao invés de multiplicar por strafe e forward, eu posso multiplicar por esta variável apenas?
2º Sobre a gravidade a variavel "jumpForce" teria a mesma função da "jumpSpeed"? ou não?
opa eai beleza?
no ajuste do teto no eixo Y, ele n poderia dar erro caso eu tivesse em 1 lugar alto ? Tipo no segundo lugar de uma casa!
Fala AleFeroiz, blz!
Não sei se entendi exatamente, mas fiz um teste aqui. Coloquei o player em cima de um objeto, depois coloquei outro acima da cabeça. Nesse caso a colisão com o teto continua funcionando corretamente. Era isso? Se não for, fala ai pra gente resolver :D
@@ProgramandoGames Era isso msm, eu tbm testei e vi q n tinha errado, eu n entendi foi nada do porquê não deu erro mas dps vo tenta observa de novo :D
(E faz mais vídeos de tipo lanterna de exemplo, seus tutoriais são incríveis!)
show, tem videos de como colocar armas, como no cs-go e aquele menu de compra de armas , bombas, e munições, pegar armas ?
valeu man, tava com uma baita de uma duvida sobre como fazer a script d movimento. ksksks me salvou
Insina colocar joystick e outros controles na tela
Gostei muito, vc poderia fazer OUTRO vídeo mais demorado para eu poder compreende melhor, aí vc explica de uma forma diferente, como se vc estivesse falando com uma pessoa q n sabe nada de programação
Quando eu olho pra cima, vai pra baixo e vice-versa, como que conserta?
voce sabe resolver um bug, Quando eu desço a escada meu personagem ele fica avoando na parede
o meu esta andando mas na direção global como faço pra mudar para local?
e ai amigo tudo bom? gostaria de ti perguntar se vc irá criar uma série de FPS online com photon no seu canal ? abraços!
Fala Kakitus Gamer (curti o nome kkkk), tudo certo!
Estou trabalhando numa série de FPS pro canal, deve sair por volta de março/abril do ano que vem, tá ficando bem legal! :D
Sobre a parte online, ainda não tenho planos, mas com certeza é uma excelente ideia pro futuro!
Muito obrigado pela pergunta.
Abração!
@@ProgramandoGames top cara ! sempre curti fps, mas vc vai modelar no blender os assets personagens ou pegar tudo pronto já?
@@polyshooter3d Já estou modelando no blender : )
@@ProgramandoGames ai sim mano top vai ficar! eu gosto de criar do zero também não gosto de pegar nada pronto sabe.
Como ajusta a distancia do chao com o pé do player??
É normal a câmera mover mais do que devia ? a minha fica arrastando um pouco sempre que mexo, e se mexo muito arrasta ainda mais, tirando isso ótimo tutorial
como que faz se for para voltar para um menu e a seta ficar visivel
o jogo meu ficou estranho pq ele so vai em um angulo, se eu tiver olhando para a esquerda e apertar para frente ele vai para um lado aleatorio, podem arrumar isso pls?
pq parou? os tutoriais são muito bons
Fala Édipo, eu dei uma parada por causa de acontecimentos pessoais, tava praticamente impossível produzir conteúdo pro canal. Agora que tudo se acertou, próximos meses estarei full time dedicado ao canal o/
@@ProgramandoGames muito bom
O meu unity não está considerando o private da camera
A mecânica de pulo que utilizo é simplesmente um add force no eixo y do vector3 do objeto
Poderia me explicar pq não ultilizar esse metodo e pq oque você fez no vídeo é melhor?
Top
imagina ele explica depois de todo esse tempo de como fazer uma animação da camera para andar e correr
Sei que o vídeo é antigo e acompanhei o tutorial e deu certinho!
Porém gostaria de tirar uma dúvida, ao eu chegar com o meu personagem próximo de alguma porta, por exemplo, a câmera simplesmente atravessa e eu consigo ver do outro lado. Sabe como eu posso resolver?
Edit: Consegui resolver, galera! É bem simples, só ir no elemento ''Main Camera'' e ir até a opção ''Clipping Planes'' e colocar a opção 0.1. :)
quando eu termino o codigo do pulo e vo testar o personagem não anda nem pula, fica parado
codigo é esse aqui:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movimento : MonoBehaviour
{
CharacterController controller;
Vector3 strafe;
Vector3 forward;
Vector3 vertical;
float forwardSpeed = 5f;
float strafeSpeed = 5f;
float gravity;
float jumpSpeed;
float maxJumpHeight = 2f;
float timeToMaxHeight;
// Start is called before the first frame update
void Start()
{
controller = GetComponent();
gravity = (-2 * maxJumpHeight) / (timeToMaxHeight * timeToMaxHeight);
jumpSpeed = (2 * maxJumpHeight) / timeToMaxHeight;
}
// Update is called once per frame
void Update()
{
float forwardInput = Input.GetAxisRaw("Vertical");
float strafeInput = Input.GetAxisRaw("Horizontal");
forward = forwardInput * forwardSpeed * transform.forward;
strafe = strafeInput * strafeSpeed * transform.right;
vertical += gravity * Time.deltaTime * Vector3.up;
if(controller.isGrounded)
{
vertical = Vector3.down;
}
if(Input.GetKeyDown(KeyCode.Space) && controller.isGrounded)
{
vertical = jumpSpeed * Vector3.up;
}
Vector3 finalVelocity = strafe + forward + vertical;
controller.Move(finalVelocity * Time.deltaTime);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movimento : MonoBehaviour
{
CharacterController controller;
Vector3 strafe;
Vector3 forward;
Vector3 vertical;
float forwardSpeed = 5f;
float strafeSpeed = 5f;
float gravity;
float jumpSpeed;
float maxJumpHeight = 2f;
float timeToMaxHeight;
// Start is called before the first frame update
void Start()
{
controller = GetComponent();
gravity = (-2 * maxJumpHeight) / (timeToMaxHeight * timeToMaxHeight);
jumpSpeed = (2 * maxJumpHeight) / timeToMaxHeight;
}
// Update is called once per frame
void Update()
{
float forwardInput = Input.GetAxisRaw("Vertical");
float strafeInput = Input.GetAxisRaw("Horizontal");
forward = forwardInput * forwardSpeed * transform.forward;
strafe = strafeInput * strafeSpeed * transform.right;
vertical += gravity * Time.deltaTime * Vector3.up;
if(controller.isGrounded)
{
vertical = Vector3.down;
}
if(Input.GetKeyDown(KeyCode.Space) && controller.isGrounded)
{
vertical = jumpSpeed * Vector3.up;
}
Vector3 finalVelocity = strafe + forward + vertical;
controller.Move(finalVelocity * Time.deltaTime);
}
}
ajudou demais
Mano, não sei porque mais quando eu vou testar, da esse erro :(. "All compiler errors have to be fixed before you can enter playmode!"
Isso aconteceu quando eu fui testar " 3:18"
mano, em baixo ali aonde aparece os erros, sempre tem os motivos desse erro, você seguindo o que esta falando lá, já organiza
Vc tem um QI muito elevado
man, só 1 pergunta... esse SF aí fica dando erro.... ( tlvz eu ñ tenha entendido direito, vou reassistir )
oque vc colocou na cabeça do player?
eu n consegui ouvir direito
Video mt bom, mas nn sei pq o meu nn deu certo, ele nn anda pra onde ta olhando, talvez seja pq eu fiz a movimentação de outro jeito (com rigidbody), se for por isso ensina a fazer sem character controller
Por algum motivo, o character controller só está reconhecendo o isGrounded como true se eu estou em movimento, se meu player fica parado ele considera false. Sabe me informar se isso aconteceu com você também e como contornou isso? Parabéns pelos vídeos, são muito bons!
Valeu Mario!
Isso aconteceu comigo sim, vou explicar por que acontece e como resolvi.
Usando o caracter controller, a colisão só ocorre quando o collider do player é empurrado contra outro collider. É comum nessas implementações de movimento, que a velocidade vertical do player seja zerada quando toca o chão. O problema é que se você fizer usando o character controller, o player vai ficar como se estivesse "flutuando" no chão, pois não há o contato entre o collider do player e do chão, então o isGrounded nunca será true. Pra resolver isso, é necessário setar a velocidade vertical sempre um valor diferente de zero mesmo que ele esteja no chão, pra ele empurrar o player para baixo e encostar no collider. Ali onde eu faço "if ( isGrounded )" 5:00, eu seto a velocidade vertical pra Vector.down (0, -1).
Tenta fazer duas coisas:
1 - alterar o valor do skinWitdh, isso pode influenciar, pois quanto menor, mais força vc tem que fazer no player pro collider encostar no chão e tornar o "isGrounded = true".
2 - se o primeiro não resolver, vai aumentando um pouco o valor da velocidade vertical no if isGrounded (por exemplo, 1.2f * Vector.down, 1.3f * Vector.down, 1.4f * Vector.down etc).
Caso nenhuma das formas funcionar, me avise que dou uma explorada pra saber se tem algum outro problema que não previ.
oi amigo to começando agora com isso de criação no unity mas fica dando erro no vector3 e ele nao muda de cor igual o seu isso é um script separado ou o q?
Como eu faria para por uma função de correr pelo shift
Fala zé!
A primeira coisa que vc precisa fazer é checar se o player está se movendo, obviamente, pq vc só corre se já está em movimento hehehe. Coloca uma condição que verifica que se o valor absoluto de strafeInput ou forwardInput são maiores que 0. Seria algo assim:
if( Mathf.Abs( strafeInput ) >= 0 || Mathf.Abs( forwardInput ) >= 0)
isMoving = true;
else
isMoving = false;
Garantido que o player está se movendo, agora vc checa se o player está pressionando shift. Se estiver, vc muda o valor das speeds pra um valor maior. Você pode definir algo como walkingSpeed e runningSpeed.
if( isMoving && Input.GetKey(KeyCode.LeftShift))
speed = runningSpeed;
else
speed = walkingSpeed;
Qualquer coisa só falar!
@@ProgramandoGames Você Fez Algum Vídeo sobre isso? Se sim, me manda o link
Obs: Obrigado, seu vídeo é bem explicativo
@@ProgramandoGames Cara tu é prestativo pra caralho vai toma no cu
@@Sem_Alma kkkkkkk
cara mal entrai novideo ele ja ta progamando. porfavor voce pode mostrar em passo a passo?
CARA COMO VOCE APRENDEU A PROGRAMAR ASSIM????
cara eu tenho uma duvida que eu to começando no unity agora e eu não sei literalmente nada e quis pra começar leve tentar fazer um feijão movimentar mas o maior problema é que:
1 - o feijão não se movimenta
2 - o solo não é solido nem o personagem então o personagem atravessa o chão
3 - mesmo com o objeto apropriado chamado "terrain" (que eu acredito q ja venha com colisão oncluida) ainda assim continua atravessando
se vc tiver algum tutorial para esse basico e puder me passar pq eu realmente não consegui entender nada de outros tutoriais.
edit: eu percebi que ao inves de cair ele esta subindo.
Alguem me ajuda pfv, eu escrevo o script tudo certinho, mas na hora de testar, não acontece absolutamente nada, alguem sabe o que ta havendo? Nao tem nenhum erro nadaa...
Oi João tudo certo? Tenta baixar o projeto do github (link na descrição), abre ele no unity pelo hub e vê se funciona. Qualquer coisa me avisa aqui 😉
Vc conseque fazer os controle pra mobile
"All compiler errors have to be fixed before you can enter playmode!"
Alguém sabe resolver? Porque eu coloquei os codigos scripts certinho mais quando eu vou testar da esse erro, caso alguém saiba oque ocasionou e como resolver eu agradeceria e muito!
mn aonde fica o script do player n achei o componente
Olá Zikz, o componente fica no gameobject player.
Opa, depois como faço pra mudar o personagem ? Já tenho os scripts prontos agora quero fazer um personagem com animações e tals... alguma dica ?
Opa uma.pergunta, ficar usando o método update não pesa na aplicação? Afinal ela atualiza a cada frame e não a cada ação
qual app a gente usa pra fazer esse jogo?
Olá monica, essa ferramenta se chama Unity :) É uma engine pra desenvolver jogos.
Seu tutorial foi perfeito, mas poderia me ajudar em uma coisa? eu fiz tudo certinho do script da camera, porém quando eu vou dar play no jogo automaticamente o script da camera some da "Main Camera" e n fica em primeira pessoa, eu ja fiz varias vezes e todas o script da camera sempre some e volta pra pasta scripts
Tutorial muito bom, so que eu não consigo fazer a rotação do "Player" se mover junto com a rotação da camera
o meu player não salta
meu pulo e gravidade n funciona e n deu nenhum erro alguem me ajuda
Gostei muito do video mas eu tentei colocar para que o personagem corra ao apertar o shift, ele consegue pular enquanto corre para traz e pros lados, mas nao consegue pular quando esta correndo pra frente e eu nao sei pq, eu só adicionei uma variavel run, e coloquei ela na soma que determina o movimento (forward e strafe), quando aperto shift ele aumenta o valor da variavel e quando solta ele diminui pro normal. Se puder me ajudar eu agradeceria muito.
Ai mn quando eu aperto a tecla "a" e "d" ele vai pra frente e para trás em vez de ir pra esquerda e direita
Fala John,
Veja na hora de pegar o input Horizontal e Vertical se não está invertido. Ou mesmo na hora de multiplicar os inputs, se você não trocou os eixos. Qualquer coisa me fala ai :)
Cara, me ajuda!
eu tentei fazer meu proprio script so que saiu errado, o W e S adiconavam e retiravam do valor Z
e o D e A adicionavam no valo x.
depois copiei seu script e continuou a msm coisa.
o q eu faço?
Por favor me explica esses negocios.