Controle de Personagem
4 participantes
Página 1 de 1
Controle de Personagem
Eu estou com meu projetinho aqui e depois de uns três dias pensando que estilo de câmera adotaria para ele, resolvi que seria uma câmera que só acompanha o movimento do personagem, sem rodar nem nada do gênero e até aí estava tudo muito fácil.
Entretanto, para esse tipo de câmera, seria necessário que o personagem se movesse "olhando" para as direções que ele vai, caso ande para frente, olha para frente (algo como nos jogos de Pokémon) e é aí que meu problema começa. Não sei que tipo de código usar para fazer o personagem olhar para essas direções.
Tentei uma gambiarra criando gameobjects vazios em todos os pontos cardeais e mandei um LookAt mas nem preciso dizer que além de muito mal feito, não era suave e nem um pouco otimizado. Ah sim, e há esse ponto de que o personagem deve rotacionar o corpo dele ao invés de simplesmente "teleportar" para a determinada rotação.
Alguém poderia me explicar como fazer isso?
Entretanto, para esse tipo de câmera, seria necessário que o personagem se movesse "olhando" para as direções que ele vai, caso ande para frente, olha para frente (algo como nos jogos de Pokémon) e é aí que meu problema começa. Não sei que tipo de código usar para fazer o personagem olhar para essas direções.
Tentei uma gambiarra criando gameobjects vazios em todos os pontos cardeais e mandei um LookAt mas nem preciso dizer que além de muito mal feito, não era suave e nem um pouco otimizado. Ah sim, e há esse ponto de que o personagem deve rotacionar o corpo dele ao invés de simplesmente "teleportar" para a determinada rotação.
Alguém poderia me explicar como fazer isso?
K3485- Iniciante
- PONTOS : 2485
REPUTAÇÃO : 0
Respeito as regras :
Re: Controle de Personagem
Esta dúvida já foi respondida :
https://www.schultzgames.com/t6853-resolvido-duvida-com-movimentacao#48017
https://www.schultzgames.com/t6853-resolvido-duvida-com-movimentacao#48017
Daniel Pires da Silva- Avançado
- PONTOS : 2755
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: Controle de Personagem
Desculpe, eu não sabia que já tinham perguntado isso.
De qualquer forma, testei o código que você passou mas não deu certo. Meu cubo não olha para nenhuma direção e o console fica dizendo "Look rotation viewing vector is zero"
Esse Quaternion.LookRotation parece interessante.
De qualquer forma, testei o código que você passou mas não deu certo. Meu cubo não olha para nenhuma direção e o console fica dizendo "Look rotation viewing vector is zero"
Esse Quaternion.LookRotation parece interessante.
K3485- Iniciante
- PONTOS : 2485
REPUTAÇÃO : 0
Respeito as regras :
Re: Controle de Personagem
Você editou o codigo? Por que eu escrevi aquele 'if' para não aparecer essa mensagem que você falou. Não aonteceu a mesma coisa com o cara lá.K3485 escreveu:Desculpe, eu não sabia que já tinham perguntado isso.
De qualquer forma, testei o código que você passou mas não deu certo. Meu cubo não olha para nenhuma direção e o console fica dizendo "Look rotation viewing vector is zero"
Esse Quaternion.LookRotation parece interessante.
Daniel Pires da Silva- Avançado
- PONTOS : 2755
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: Controle de Personagem
Apenas copie todo o código e cole em um void Update()K3485 escreveu:Desculpe, eu não sabia que já tinham perguntado isso.
De qualquer forma, testei o código que você passou mas não deu certo. Meu cubo não olha para nenhuma direção e o console fica dizendo "Look rotation viewing vector is zero"
Esse Quaternion.LookRotation parece interessante.
Daniel Pires da Silva- Avançado
- PONTOS : 2755
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: Controle de Personagem
Sim, copiei e não modifiquei.
Uma pergunta, mesmo que funcione, é possível fazer ele "girar suavemente" com esse mesmo código ou envolveria alguma modificação muito grande?
E só pra conferir se eu realmente entendi, a direcao será definida por valores que vão de 1 a -1 nos eixos x e z através dos Inputs e com isso ele define uma coordenada para olhar, então tecnicamente esse quaternion.lookrotation deveria fazer com que o objeto olhasse para isso.
Uma pergunta, mesmo que funcione, é possível fazer ele "girar suavemente" com esse mesmo código ou envolveria alguma modificação muito grande?
E só pra conferir se eu realmente entendi, a direcao será definida por valores que vão de 1 a -1 nos eixos x e z através dos Inputs e com isso ele define uma coordenada para olhar, então tecnicamente esse quaternion.lookrotation deveria fazer com que o objeto olhasse para isso.
K3485- Iniciante
- PONTOS : 2485
REPUTAÇÃO : 0
Respeito as regras :
Re: Controle de Personagem
Para fazer ele girar suavemente é so usar um quaternion.slerp, foi isso que eu fiz no meu jogo.K3485 escreveu:Sim, copiei e não modifiquei.
Uma pergunta, mesmo que funcione, é possível fazer ele "girar suavemente" com esse mesmo código ou envolveria alguma modificação muito grande?
E só pra conferir se eu realmente entendi, a direcao será definida por valores que vão de 1 a -1 nos eixos x e z através dos Inputs e com isso ele define uma coordenada para olhar, então tecnicamente esse quaternion.lookrotation deveria fazer com que o objeto olhasse para isso.
Heheh, essa tecnica foi a mais facil que eu consegui imaginar, tinha uma outra tecnica que vc precisava fazer um calculo do raio de uma circunferencia usando o pi para fazer a mesma coisa, mas essa tecnica que eu usei tecnicamente é um vetor 3d que percorre ao redor do personagem usando o sistema de inputs do Unity, assim usando o lookRotation de um Quaternion para pegar o tipo de rotaçao que o jogador deve executar para olhar para o vetor 3d imaginario.
Daniel Pires da Silva- Avançado
- PONTOS : 2755
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: Controle de Personagem
Bom, descobri qual era o problema (mais ou menos) e agora ele está sim rotacionando. Entretanto, o console continua apitando loucamente esse aviso de que "Look rotation viewing vector is zero". Há algo de errado? Como fazer ele parar de spammar esse aviso?
K3485- Iniciante
- PONTOS : 2485
REPUTAÇÃO : 0
Respeito as regras :
Re: Controle de Personagem
Cara, provavelmente seu Unity está com algum bug, por que oque corrige esse erro é a sentença do 'if', que realiza a rotação apenas quando o vector3 não for igual a zero. A causa dessa mensagem é que o objeto com o script está tentando olhar para um vector3 com todos os eixos em zero, mas o 'if' corrige isso.K3485 escreveu:Bom, descobri qual era o problema (mais ou menos) e agora ele está sim rotacionando. Entretanto, o console continua apitando loucamente esse aviso de que "Look rotation viewing vector is zero". Há algo de errado? Como fazer ele parar de spammar esse aviso?
Daniel Pires da Silva- Avançado
- PONTOS : 2755
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: Controle de Personagem
Vish, minha versão é a 5.5.4. Qual a versão mais recente e estável para eu verificar se é isso mesmo?
K3485- Iniciante
- PONTOS : 2485
REPUTAÇÃO : 0
Respeito as regras :
Re: Controle de Personagem
A mais recente, pelo que eu sei é a 2017.3, mas acho que isso não tem muito a ver com a mensagem de erro. So por curiosidade, por que antes a rotação nao funcionou para vc?
Daniel Pires da Silva- Avançado
- PONTOS : 2755
REPUTAÇÃO : 37
Idade : 20
Áreas de atuação : Cursando C#
Respeito as regras :
Re: Controle de Personagem
Eu tinha feito uma animação "Padrão" e uma "andando" (não eram animações de verdade, eram só um cubo girando 15 graus pra cada lado pra fingir que estava andando e simular um personagem). Quando removi o Animator e as animações ele passou a funcionar. Não sabia que o rotation da animação interferia nesses códigos
De qualquer forma, estou baixando essa 2017.3 pra ver se melhora. Caso não, terei de achar outro método.
De qualquer forma, estou baixando essa 2017.3 pra ver se melhora. Caso não, terei de achar outro método.
K3485- Iniciante
- PONTOS : 2485
REPUTAÇÃO : 0
Respeito as regras :
Re: Controle de Personagem
É, o console ainda está spammando aquela mensagem. Vou ter de pensar em outra coisa.
Mesmo assim, muito obrigado, você me ajudou bastante, porque eu não sabia de maneira alguma como poderia fazer isso.
Mesmo assim, muito obrigado, você me ajudou bastante, porque eu não sabia de maneira alguma como poderia fazer isso.
K3485- Iniciante
- PONTOS : 2485
REPUTAÇÃO : 0
Respeito as regras :
Re: Controle de Personagem
- Código:
[size=15]Olá Comunidade SchultzGames... Estou desenvolvendo um Projeto no Unity 3D versão 5.5.0f3 e surgiu um erro no script de controle do inimigo, tenho pesquisado há dias, e até o momento não encontrei nenhuma resolução.[/size]
[size=15][/size]
[size=15]Alguém poderia me dá uma orientação na resolução desse problema. [/size]
[size=15][/size]
[size=15]Abaixo as linhas do código onde o console aponta o erro.[/size]
[size=15][/size]
[size=15] void FixedUpdate()[/size]
[size=15] {[/size]
[size=15] UpdateGetTargetTime();[/size]
[size=15] }[/size]
[size=15][/size]
[size=15] void UpdateGetTargetTime()[/size]
[size=15] {[/size]
[size=15] currTimeToGetTarget += Time.deltaTime;[/size]
[size=15][/size]
[size=15] if (currTimeToGetTarget >= timeToGetTarget)[/size]
[size=15] {[/size]
[size=15] target = GameObject.FindWithTag("Player").transform;[/size]
[size=15] currTimeToGetTarget = 0;[/size]
[size=15] }[/size]
[size=15] }[/size]
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Controle de Personagem
Olá Comunidade SchultzGames.... Estou desenvolvendo um Projeto no Unity 3D versão 5.5.0f3 e surgiu um erro no script de controle do inimigo, tenho pesquisado há dias, e até o momento não encontrei nenhuma resolução.
Alguém poderia me dá uma orientação na resolução desse problema.
Abaixo as linhas do código onde o console aponta o erro.
void FixedUpdate()
{
UpdateGetTargetTime();
}
void UpdateGetTargetTime()
{
currTimeToGetTarget += Time.deltaTime;
if (currTimeToGetTarget >= timeToGetTarget)
{
target = GameObject.FindWithTag("Player").transform;
currTimeToGetTarget = 0;
}
}
Alguém poderia me dá uma orientação na resolução desse problema.
Abaixo as linhas do código onde o console aponta o erro.
void FixedUpdate()
{
UpdateGetTargetTime();
}
void UpdateGetTargetTime()
{
currTimeToGetTarget += Time.deltaTime;
if (currTimeToGetTarget >= timeToGetTarget)
{
target = GameObject.FindWithTag("Player").transform;
currTimeToGetTarget = 0;
}
}
junior93- Iniciante
- PONTOS : 2483
REPUTAÇÃO : 3
Respeito as regras :
Re: Controle de Personagem
ola amigo qual seria esse problema??,crie um topico com sua dúvida e especifique o problema/objetivo,para analizarmos
Tópicos semelhantes
» Erro em script de controle de personagem.
» Virtual joystick controle para movimentar personagem
» Como usar um personagem low poly como personagem jogavel
» Controle Estilo GTA
» Personagem da AS, animações do mixamo dão erro ao usar avatar do personagem.
» Virtual joystick controle para movimentar personagem
» Como usar um personagem low poly como personagem jogavel
» Controle Estilo GTA
» Personagem da AS, animações do mixamo dão erro ao usar avatar do personagem.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos