Incrível, pessoal vamos incentivar este tipo de conteúdo pois é muito limitado no nosso idioma e pessoas como eu que somos limitado até mesmo no próprio português tem uma facilidade melhor em aprender. OBRIGADO CARA, CONTINUE ASSIM.
Opa, muito obrigado mano!! Ainda tô me acostumando com a rotina de gravar vídeo, mas a ideia é trazer mesmo esses conteúdos que muitas vezes só existem em outras línguas kkkk valeu demais 😁
OBRIGADO, foi muuito ddificil acchar uma canal que fizesse a movimentação levar em consideração a camera sem usar transform, o cara ate concertou ptoblrmas que eu nem tinha percebido
Olá, eu so queria que o neu personagem ir pra direita é para esquerda, mas o script var Horizontalinput = Input.GetAxis ("horizontal"); Nao ta funcionando😢
Valeu demais 😁 Logo mais vou voltar a postar toda semana!! Programação é só persistir, tem hora que a gente quer "matar o código" kkkk, mas depois é boa a sensação de conseguir!
Eu sou do tipo de pessoa que defende que programação você aprende fazendo (na prática). No final, tudo se resume ao quão bom você é de pesquisar no Google kkkkk. Mas é só persistir que quando você começar a conseguir desenvolver, mesmo que coisas simples, a sensação é bem recompensadora 🚀💪
O script, migos: using System.Collections; using System.Collections.Generic; using UnityEngine; public class MovimentoJogador : MonoBehaviour { public Rigidbody rb; public Transform cam; public LayerMask ground; public float speed, maxSpeed, drag; public float rotationSpeed, jumpForce; bool left, forward, backward, right; bool grounded, jump; void Update() { HandleInput(); LimitVelocity(); CheckGrounded(); } void FixedUpdate() { HandleMovement(); HandleRotation(); } void CheckGrounded() { grounded = Physics.Raycast(transform.position + Vector3.up * .1f, Vector3.down, .2f, ground); } void HandleRotation() { if ((new Vector2(rb.velocity.x, rb.velocity.z)).magnitude > .1f) { Vector3 horizontalDir = new Vector3(rb.velocity.x, 0, rb.velocity.z); Quaternion rotation = Quaternion.LookRotation(horizontalDir, Vector3.up); transform.rotation = Quaternion.RotateTowards(transform.rotation, rotation, rotationSpeed); } } void HandleDrag() { rb.velocity = new Vector3(rb.velocity.x, 0, rb.velocity.z) / (1 + drag / 100) + new Vector3(0, rb.velocity.y, 0); } void LimitVelocity() { Vector3 horizontalVelocity = new Vector3(rb.velocity.x, 0, rb.velocity.z); if (horizontalVelocity.magnitude > maxSpeed) { Vector3 limitedVelocity = horizontalVelocity.normalized * maxSpeed; rb.velocity = new Vector3(limitedVelocity.x, rb.velocity.y, limitedVelocity.z); } } void HandleMovement() { Quaternion dir = Quaternion.Euler(0f, cam.rotation.eulerAngles.y, 0f); if (left) { rb.AddForce(dir * Vector3.left * speed); left = false; } if (forward) { rb.AddForce(dir * Vector3.forward * speed); forward = false; } if (backward) { rb.AddForce(dir * Vector3.back * speed); backward = false; } if (right) { rb.AddForce(dir * Vector3.right * speed); right = false; } if (jump && grounded) { transform.position += Vector3.up * .1f; rb.velocity = new Vector3(rb.velocity.x, 0, rb.velocity.y); rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); jump = false; }
}
void HandleInput() { if (Input.GetKey(KeyCode.A)) left = true; if (Input.GetKey(KeyCode.W)) forward = true; if (Input.GetKey(KeyCode.S)) backward = true; if (Input.GetKey(KeyCode.D)) right = true; if (Input.GetKeyDown(KeyCode.Space) && grounded) jump = true; } }
tenho uma dúvida. Por que, quando você usou 'if' e adicionou a força junto à variável que retornou falso, o comando de velocidade não foi interrompido?
Cara no meu, quando eu coloco a palavra HandleInput(); aparece a mensagem "O nome "HandleInput" não existe no contexto atual. Meu script ta exatamente igual ao seu, mas ta dando esse erro. Nem se quer fica com a cor amarela igual no seu video, não sei o pq disso.
Pode ser 2 coisas, se não aparece erro: 1. A variável no inspetor ali nos 26:05 está com o valor zerado (Quando altera o valor dela no modo de "Play" ela retorna pro padrão "0" quando sai dele) 2. A função CheckGrounded não está detectando que o personagem está no chão para poder pular (Verifica se você setou a "Layer" dos objetos que são considerados como chão, igual eu fiz ali perto dos 23:12 E também verifica se os parâmetros do "raycast" ali nos 22:37 estão corretos)
@@enzogabrielsantos146 mano eu tbm tava com esse problema, mudei umas coisas e deu certo. Testa essa linha no lugar da original, eu mudei a posição de origem do Ray, troquei 0.1 por -0.9. grounded = Physics.Raycast(transform.position + Vector3.up * -0.9f, Vector3.down, .2f, ground);
É pq pra testar a câmera tem q ter a movimentação pronta, e pra testar a movimentação tem q ter a câmera 🥲 Mas o código da movimentação é pra funcionar até mesmo com a câmera parada. Os próximos vídeos serão sobre a câmera!
Para quem estiver com o error de o Player nao pular, é so modificar esta linha " grounded = Physics.Raycast(transform.position + Vector3.up * .1f, Vector3.down, .2f, Ground); " para " grounded = Physics.Raycast(transform.position + Vector3.up * -0.9f, Vector3.down, 1.0f, Ground); "
Incrível, pessoal vamos incentivar este tipo de conteúdo pois é muito limitado no nosso idioma e pessoas como eu que somos limitado até mesmo no próprio português tem uma facilidade melhor em aprender. OBRIGADO CARA, CONTINUE ASSIM.
Opa, muito obrigado mano!! Ainda tô me acostumando com a rotina de gravar vídeo, mas a ideia é trazer mesmo esses conteúdos que muitas vezes só existem em outras línguas kkkk valeu demais 😁
Up👍
Mano, deixa um link do script aqui nos comentários para nós copiarmos, por favor 🙏
Comentem mais tipos de movimentação que vocês querem ver!!
Muito bom. Sensacional. Continua ai
OBRIGADO, foi muuito ddificil acchar uma canal que fizesse a movimentação levar em consideração a camera sem usar transform, o cara ate concertou ptoblrmas que eu nem tinha percebido
Muito obrigado!!
Mais vídeos cara, por favor! Vc é muito bom! Parabéns! 😎👏
Valeu demais!! 😁😁
Olá, eu so queria que o neu personagem ir pra direita é para esquerda, mas o script var Horizontalinput = Input.GetAxis ("horizontal");
Nao ta funcionando😢
o H tem que ser maiúsculo man "Horizontal"
@@ThaisdriellyandradedasilvaThai mn eu já coloquei😭, tem como vc me ajudar prfv tô quase desistindo do meu sonho, manda seu insta plmds🙏🏼😔
Que tutorial excelente, cara... parabéns e gratidão pelo conteúdo!
Deixa a script disponível pra copiar
Continua irmão!! +1 inscrito.
Sou estudante de unity3d, espero ser tão bom quanto vc.
Valeu demais 😁 Logo mais vou voltar a postar toda semana!! Programação é só persistir, tem hora que a gente quer "matar o código" kkkk, mas depois é boa a sensação de conseguir!
@@Gui_Code Exatamente! Ansioso pelos novos conteúdos.
Esse vídeo tá OTIMO!!
Muito obrigado!! 😁
Volta com os vídeos man
só fico imaginando eu aprender a fazer isso tudo e até programar, pior que eu acho que não sou capaz. Valeu pelo dica +1 inscrito e like
Eu sou do tipo de pessoa que defende que programação você aprende fazendo (na prática). No final, tudo se resume ao quão bom você é de pesquisar no Google kkkkk. Mas é só persistir que quando você começar a conseguir desenvolver, mesmo que coisas simples, a sensação é bem recompensadora 🚀💪
Vlw mano, esse conteudo é muito importante pro português
O operador '*' não pode ser aplicado a operandos do tipo 'Vector3' e 'bool'
Ta aparecendo isso quando eu tento colocar o pulo
Faz mais vídeos pfv, esta cada vez mais difícil encontrar conteúdo atualizado de Unity no RUclips.
Muito Bom!!
Valeu!!
Excelente
Como seria pra implementar para joystick? Consegue me ajudar?
Posta um vídeo completo sobre a cinemachine por favor! estou no aguardo.
Os próximos vídeos serão focados na movimentação da câmera, vou fazer um sobre o cinemachine!
Minha unity nao aparece a opção para colocor um rb ou uma cam msm eu escrevendo e reescrevendo codigo msm pegando pronto vc sabe oque pode ser?
não existe velocity, e agora?
quando eu coloco o script da movimentação do player nele, não aparece o "rb" e "speed" em baixo. Alguém sabe resolver?
Como assim embaixo?
When will you release the video you explaining the code of the camera?
The latest 2 videos are about the camera. Also there's a short about it:
ruclips.net/user/shortsD3uYD9ET7jA
O script, migos:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovimentoJogador : MonoBehaviour
{
public Rigidbody rb;
public Transform cam;
public LayerMask ground;
public float speed, maxSpeed, drag;
public float rotationSpeed, jumpForce;
bool left, forward, backward, right;
bool grounded, jump;
void Update()
{
HandleInput();
LimitVelocity();
CheckGrounded();
}
void FixedUpdate()
{
HandleMovement();
HandleRotation();
}
void CheckGrounded()
{
grounded = Physics.Raycast(transform.position + Vector3.up * .1f, Vector3.down, .2f, ground);
}
void HandleRotation()
{
if ((new Vector2(rb.velocity.x, rb.velocity.z)).magnitude > .1f)
{
Vector3 horizontalDir = new Vector3(rb.velocity.x, 0, rb.velocity.z);
Quaternion rotation = Quaternion.LookRotation(horizontalDir, Vector3.up);
transform.rotation = Quaternion.RotateTowards(transform.rotation, rotation, rotationSpeed);
}
}
void HandleDrag()
{
rb.velocity = new Vector3(rb.velocity.x, 0, rb.velocity.z) / (1 + drag / 100) + new Vector3(0, rb.velocity.y, 0);
}
void LimitVelocity()
{
Vector3 horizontalVelocity = new Vector3(rb.velocity.x, 0, rb.velocity.z);
if (horizontalVelocity.magnitude > maxSpeed)
{
Vector3 limitedVelocity = horizontalVelocity.normalized * maxSpeed;
rb.velocity = new Vector3(limitedVelocity.x, rb.velocity.y, limitedVelocity.z);
}
}
void HandleMovement()
{
Quaternion dir = Quaternion.Euler(0f, cam.rotation.eulerAngles.y, 0f);
if (left)
{
rb.AddForce(dir * Vector3.left * speed);
left = false;
}
if (forward)
{
rb.AddForce(dir * Vector3.forward * speed);
forward = false;
}
if (backward)
{
rb.AddForce(dir * Vector3.back * speed);
backward = false;
}
if (right)
{
rb.AddForce(dir * Vector3.right * speed);
right = false;
}
if (jump && grounded)
{
transform.position += Vector3.up * .1f;
rb.velocity = new Vector3(rb.velocity.x, 0, rb.velocity.y);
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
jump = false;
}
}
void HandleInput()
{
if (Input.GetKey(KeyCode.A))
left = true;
if (Input.GetKey(KeyCode.W))
forward = true;
if (Input.GetKey(KeyCode.S))
backward = true;
if (Input.GetKey(KeyCode.D))
right = true;
if (Input.GetKeyDown(KeyCode.Space) && grounded)
jump = true;
}
}
PQPPP kkkk Caralho, que medo disso mano
tenho uma dúvida. Por que, quando você usou 'if' e adicionou a força junto à variável que retornou falso, o comando de velocidade não foi interrompido?
Cara muito obrigado
Cara no meu, quando eu coloco a palavra HandleInput(); aparece a mensagem "O nome "HandleInput" não existe no contexto atual. Meu script ta exatamente igual ao seu, mas ta dando esse erro. Nem se quer fica com a cor amarela igual no seu video, não sei o pq disso.
Deu no meu também, tu conseguiu arrumar ?
consegui resolver, ficou assim
void HandleInput() {
if (Input.GetKey(KeyCode.A)) {
left = true;
} else {
left = false;
}
if (Input.GetKey(KeyCode.W)) {
forward = true;
} else {
forward = false;
}
if (Input.GetKey(KeyCode.S)) {
backward = true;
} else {
backward = false;
}
if (Input.GetKey(KeyCode.D)) {
right = true;
} else {
right = false;
}
Man, o codigo ta certo, nem erro ele aparece na unity, mas por algum motivo ele não pula
Pode ser 2 coisas, se não aparece erro:
1. A variável no inspetor ali nos 26:05 está com o valor zerado (Quando altera o valor dela no modo de "Play" ela retorna pro padrão "0" quando sai dele)
2. A função CheckGrounded não está detectando que o personagem está no chão para poder pular (Verifica se você setou a "Layer" dos objetos que são considerados como chão, igual eu fiz ali perto dos 23:12 E também verifica se os parâmetros do "raycast" ali nos 22:37 estão corretos)
@@Gui_Code Mano eu ja fiz tudo isso e ainda não pula.
@@enzogabrielsantos146 mano eu tbm tava com esse problema, mudei umas coisas e deu certo. Testa essa linha no lugar da original, eu mudei a posição de origem do Ray, troquei 0.1 por -0.9.
grounded = Physics.Raycast(transform.position + Vector3.up * -0.9f, Vector3.down, .2f, ground);
Algm me cnsegue dar o codigo completo?
tava quase desistindo ja
como eu fasso um código, sem o código da camera, e só funciona com esse código cara. mds
É pq pra testar a câmera tem q ter a movimentação pronta, e pra testar a movimentação tem q ter a câmera 🥲
Mas o código da movimentação é pra funcionar até mesmo com a câmera parada. Os próximos vídeos serão sobre a câmera!
@@Gui_Code 1° obrigado n tava ligado nisso, 2° fico feliz que tenham próximos videos
Seria daora deixar um txt pra download ou copy do script usado no video, as vezes fica muito rapido pra processar
Um computador mais simples dá para rodar isso .estou pensando no meu filho aprender isso? Tem que ter placa de vídeo?
Imagino que placa de video nao, o meu pc é mediano e esta conseguindo rodar favorável, na vdd é um notebook, ent nao tem placa de video
@@mugiwaranoluffy9498 da pra aprender com placa onboarde com 1GB vram
Vc declarou 4 variáveis usando apenas um bool? Nem sabia que dava pra fazer isso kkkk
TOP!!! só n funcionou no meu porém pode ser imcompetencia minha.
tem como vc faer um video ensinado como faer NPCs. Gostei mt do seu video, me ajudou bastante!!
Fico feliz que gostou 😁Depois dos vídeos sobre o personagem vou fazer sobre os NPCs 🤖
@@Gui_Code essa eu quero ver👍
More video, please
+1 subscribed
Every thursday!! 😁
custa nada deixar a script, eu so vou me inscrever se ele deixar a script aqui no cheat.
Para quem estiver com o error de o Player nao pular, é so modificar esta linha
" grounded = Physics.Raycast(transform.position + Vector3.up * .1f, Vector3.down, .2f, Ground);
"
para
" grounded = Physics.Raycast(transform.position + Vector3.up * -0.9f, Vector3.down, 1.0f, Ground);
"
oi vlw, funcionou, mas tu consegue me explicar o que mudou pois não consegui entender
Libera o script ai pra gente
é dificil a gente procurar erro sem ter o script inteiro, tem que ficar procurando parte por parte do video de 30 minutos....
quanta enteligencia meu Deusss
Sabedoria desbalanceada 🗿 kkkkkk valeu mano!
cria depois guia ensinando sobre esses codigos. void o que significa handlemovemnt. etc void limit etc. quem é iniciante saber sobre isso ai rsrs