RigidBody.velocity ou transform.Translate?
5 participantes
Página 1 de 1
RigidBody.velocity ou transform.Translate?
E aí galera, passei um tempo sem entrar no forúm por causa de alguns problemas pessoais e agora pretendo voltar a ativa. Gostaria de saber a opinião de vocês em questão de movimentação do personagem, o que pra vocês pode otimizar o projeto, RigidBody.velocity ou transform.Translate? Desde já agradeço!
ismarspn- Programador
- PONTOS : 4000
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
Re: RigidBody.velocity ou transform.Translate?
Depende, uma coisa é completamente diferente da outra.
Rigidbody.velocity ( Você esta usando a componente Rigidbody ) - Usa física
Transform.translate ( Você tá usando uma função de translação da classe transform ) - Não usa física.
Existem tb: Rigidibody.MovePosition(Vector3 position) que é um método para movimentação, geralmente esse é mais usado.
Rigidbody.velocity ( Você esta usando a componente Rigidbody ) - Usa física
Transform.translate ( Você tá usando uma função de translação da classe transform ) - Não usa física.
Existem tb: Rigidibody.MovePosition(Vector3 position) que é um método para movimentação, geralmente esse é mais usado.
- Código:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public float playerSpeed;
private Rigidbody rb;
private Vector3 movementVelocity;
void Start() {
rb = GetComponent<Rigidbody>();
}
void MovementInput()
{
Vector3 movementInput = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
movementVelocity = movementInput.normalized * playerSpeed;
}
void FixedUpdate() {
rb.MovePosition(rb.position + movementVelocity * Time.fixedDeltaTime);
}
}
Re: RigidBody.velocity ou transform.Translate?
Para movimentação eu prefiro 10 vezes o velocity
George Lucas Vieira- Avançado
- PONTOS : 3393
REPUTAÇÃO : 132
Idade : 21
Áreas de atuação : Programação, Modelagem e Animação.
Respeito as regras :
Re: RigidBody.velocity ou transform.Translate?
Saudações amigo!
Bom, para movimentação de personagem é ERRADÍSSIMO usar transform.translate.
O Marcos mesmo já disse que nao é bom, por que o translate faz teleportes a cada frame.
Bom, para movimentação de personagem é ERRADÍSSIMO usar transform.translate.
O Marcos mesmo já disse que nao é bom, por que o translate faz teleportes a cada frame.
MarcosSchultz escreveu:transform.Translate faz pequenos 'teleportes' entre pontos, sem checar se existe um colisor ou não no caminho...
se você tem que ir de A até B, e o seu PC está rodando o jogo a 30 FPS e você quer fazer este trajeto em 1 segundo por exemplo, a Unity irá dividir este trajeto em 30 pedacinhos, e irá teleportar o objeto ponto a ponto... mas como isto acontece muito rapidamente, você nem percebe, e parece que o objeto está se movendo suavemente...
O Translate, por fazer estes teleportes, ignora totalmente colisões de tudo que é tipo, então é horrível para qualquer Player
JohnRambo- Moderador
- PONTOS : 5173
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: RigidBody.velocity ou transform.Translate?
Obrigado galera, ajudaram bastante!
ismarspn- Programador
- PONTOS : 4000
REPUTAÇÃO : 147
Idade : 30
Áreas de atuação : Unity, Photoshop, Illustrator, After Effects, Adobe Flash
Respeito as regras :
JohnRambo- Moderador
- PONTOS : 5173
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: RigidBody.velocity ou transform.Translate?
Para personagens eu sempre uso CharacterControllers, e uso o comando .move deles. é o mais indicado.
https://docs.unity3d.com/ScriptReference/CharacterController.Move.html
https://docs.unity3d.com/ScriptReference/CharacterController.Move.html
Tópicos semelhantes
» Limite e Volta no transform translate
» UNITY, TRANSFORM.TRANSLATE ATRAVESSA PAREDES
» Como fazer objetos não atravessar paredes usando transform.Translate?
» Limitar velocidade no transform ou rigidbody?
» [RESOLVIDO] Como faço para um transform.position receber um novo transform dentro de um if
» UNITY, TRANSFORM.TRANSLATE ATRAVESSA PAREDES
» Como fazer objetos não atravessar paredes usando transform.Translate?
» Limitar velocidade no transform ou rigidbody?
» [RESOLVIDO] Como faço para um transform.position receber um novo transform dentro de um if
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos