Como fazer meu personagem virar para os lados ?
3 participantes
Página 1 de 1
Como fazer meu personagem virar para os lados ?
Como fazer meu personagem virar para o lado quando eu apertar as teclas direcionais esquerda e direita. Algo como pegar a posição dele atual e acrescentar +45 ou -45 graus para virar para o lado. Porque usando o Vector 3 ele fica com uma posição muito fixa.
- Código:
transform.LookAt(vTarget);
vel = transform.forward * movimento;
vel.y = gravity;
rb.velocity = vel;
teos626- Membro
- PONTOS : 1926
REPUTAÇÃO : 0
Respeito as regras :
Re: Como fazer meu personagem virar para os lados ?
teos626 escreveu:Como fazer meu personagem virar para o lado quando eu apertar as teclas direcionais esquerda e direita. Algo como pegar a posição dele atual e acrescentar +45 ou -45 graus para virar para o lado. Porque usando o Vector 3 ele fica com uma posição muito fixa.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovimentoBeta : MonoBehaviour
{
//Velocidade de rotação
Vector3 targetRotation;
public Transform ponto;
float rotationSpeed = 8;
//Velocidade
public float WalkSpeed = 20;
public float RunSpeed = 25;
public float movimento = 0;
//Pulo
public float gravity = -7;
public float jump = 10;
public bool Pulando = true;
//Componente da gravidade
Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
rb.interpolation = RigidbodyInterpolation.Extrapolate;
}
void FixedUpdate()
{
Vector3 vTarget = new Vector3(ponto.position.x, transform.position.y, ponto.position.z);
var vel = transform.forward * 0;
vel.y = gravity;
rb.velocity = vel;
if (Input.GetKey(KeyCode.LeftShift))
{
movimento = RunSpeed;
}
else
{
movimento = WalkSpeed;
}
//Controle do movimento
if (Input.GetKey("w"))
{
transform.LookAt(vTarget);
vel = transform.forward * movimento;
vel.y = gravity;
rb.velocity = vel;
}
//Controle do Pulo
if (Input.GetButton("Pulo") && Pulando == true)
{
transform.position += (Vector3.up * jump * Time.deltaTime);
gravity = 0;
StartCoroutine(coldown());
}
else
{
gravity = -10;
}
if (Input.GetKey("f"))
{
Pulando = true;
}
movimento = WalkSpeed;
}
public IEnumerator coldown()
{
Pulando = true;
yield return new WaitForSeconds(0.1f);
Pulando = false;
}
}
teos626- Membro
- PONTOS : 1926
REPUTAÇÃO : 0
Respeito as regras :
Re: Como fazer meu personagem virar para os lados ?
O que você quer dizer com 'virar' ??? Quer fazer ele girar 45 graus na lata? quer fazer ele apenas girar temporatiamente? Qual é exatamente o movimento que está tentando fazer?
Re: Como fazer meu personagem virar para os lados ?
MarcosSchultz escreveu:O que você quer dizer com 'virar' ??? Quer fazer ele girar 45 graus na lata? quer fazer ele apenas girar temporatiamente? Qual é exatamente o movimento que está tentando fazer?
Virar para o lado em 90 graus. Mas eu quero que ele pegue a rotação atual do eixo Y e adicione + 90 graus. Exemplo: A Rotação do eixo y está em 100, quando eu apertar a tecla A ele vai add mais 90 graus para virar pro lado esquerdo, deixando o eixo y com 190. Porque o movimento da tecla W faz ele acompanhar a direção do pivo da camera, então ele sempre esta alterando a rotação do eixo y.
teos626- Membro
- PONTOS : 1926
REPUTAÇÃO : 0
Respeito as regras :
Re: Como fazer meu personagem virar para os lados ?
transform.Rotate(x,y,z);
Ou se você estiver trabalhando com ângulos definidos pode usar transform.rotation = Quaternion.Euler(X, Y, Z);
Existem também outras ferramentas do Quaternion para te auxiliar nisso, interpolando ângulos com velocidade de rotação (Lerp), etc...
[url=https://docs.unity3d.com/ScriptReference/Transform.Rotate.html]https://docs.unity3d.com/ScriptReference/Transform.Rotate.html[/url]
[url=https://docs.unity3d.com/ScriptReference/Transform-rotation.html]https://docs.unity3d.com/ScriptReference/Transform-rotation.html[/url]
[url=https://docs.unity3d.com/ScriptReference/Quaternion.html]https://docs.unity3d.com/ScriptReference/Quaternion.html[/url]
[url=https://docs.unity3d.com/ScriptReference/Quaternion.Euler.html]https://docs.unity3d.com/ScriptReference/Quaternion.Euler.html[/url]
Ou se você estiver trabalhando com ângulos definidos pode usar transform.rotation = Quaternion.Euler(X, Y, Z);
Existem também outras ferramentas do Quaternion para te auxiliar nisso, interpolando ângulos com velocidade de rotação (Lerp), etc...
[url=https://docs.unity3d.com/ScriptReference/Transform.Rotate.html]https://docs.unity3d.com/ScriptReference/Transform.Rotate.html[/url]
[url=https://docs.unity3d.com/ScriptReference/Transform-rotation.html]https://docs.unity3d.com/ScriptReference/Transform-rotation.html[/url]
[url=https://docs.unity3d.com/ScriptReference/Quaternion.html]https://docs.unity3d.com/ScriptReference/Quaternion.html[/url]
[url=https://docs.unity3d.com/ScriptReference/Quaternion.Euler.html]https://docs.unity3d.com/ScriptReference/Quaternion.Euler.html[/url]
Tópicos semelhantes
» Como Fazer O Personagem Virar
» Como fazer o Personagem Virar ?
» Como faço para meu personagem virar de acordo com o movimento?
» Como fazer o personagem "teletransportar" para outro lugar na mesma cena?
» [ AJUDA ] TOUCH PARA MOVER PERSONAGEM PARA TODOS OS LADOS USANDO BOTÕES
» Como fazer o Personagem Virar ?
» Como faço para meu personagem virar de acordo com o movimento?
» Como fazer o personagem "teletransportar" para outro lugar na mesma cena?
» [ AJUDA ] TOUCH PARA MOVER PERSONAGEM PARA TODOS OS LADOS USANDO BOTÕES
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos