Como criar um offset fluido na Unity?
2 participantes
Página 1 de 1
Como criar um offset fluido na Unity?
Olá pessoal. Eu estou precisando que os objetos arrastados pelo meu dedo (touch) não fiquem no mesmo ponto em que meu dedo estiver para que fiquem visíveis o tempo todo. Com isso, preciso que eles fiquem um pouco à frente do meu dedo (transform.position.z) e um pouco ao lado também (transform.position.x) criando um novo vetor intermediário.
Até aí tudo bem pra mim, mas preciso que, quando eu arraste para a esquerda, o offset horizontal seja pra esquerda, mas, quando eu arraste pra direita, ele seja pra direita. Tudo isso de um forma fluida pra que não atrapalhe na hora em que eu quiser encaixar o meu objeto em um local do jogo.
Atualmente, quando tento encaixar, fica muito complicado pelo offset detectar quaisquer mínimos movimentos do dedo.
Não sei se consegui ser claro. Alguém conseguiria me ajudar, por favor?
Desde já, agradeço.
Até aí tudo bem pra mim, mas preciso que, quando eu arraste para a esquerda, o offset horizontal seja pra esquerda, mas, quando eu arraste pra direita, ele seja pra direita. Tudo isso de um forma fluida pra que não atrapalhe na hora em que eu quiser encaixar o meu objeto em um local do jogo.
Atualmente, quando tento encaixar, fica muito complicado pelo offset detectar quaisquer mínimos movimentos do dedo.
Não sei se consegui ser claro. Alguém conseguiria me ajudar, por favor?
Desde já, agradeço.
Atho- Membro
- PONTOS : 1903
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Re: Como criar um offset fluido na Unity?
Vc pode usar o deltaPosition do touch pra pegar o delta entre o valor do touch do último update, e o touch do update seguinte.
Então vc pode somar esse valor do deltaPosition à posição atual do seu objeto, por exemplo:
Então ali onde tem o "yourObject" vc troca pela referencia do transform do seu objeto, e vc pode criar uma variável do tipo float chamada "speed" pra gerenciar a velocidade da movimentação do objeto, já q eu pressuponho q vc esteja chamando o método do Touch no Update.
Então vc pode somar esse valor do deltaPosition à posição atual do seu objeto, por exemplo:
- Código:
private void TouchMovement(){
Touch _touch = Input.touches[0];
if(_touch.phase == TouchPhase.Moved){
yourObject.position = new Vector2(yourObject.position.x +
_touch.deltaPosition.x * speed, yourObject.position.y +
_touch.deltaPosition.y * speed);
}
}
Então ali onde tem o "yourObject" vc troca pela referencia do transform do seu objeto, e vc pode criar uma variável do tipo float chamada "speed" pra gerenciar a velocidade da movimentação do objeto, já q eu pressuponho q vc esteja chamando o método do Touch no Update.
Re: Como criar um offset fluido na Unity?
Vou testar aqui e volto pra dar o retorno. ObrigadoMayLeone escreveu:Vc pode usar o deltaPosition do touch pra pegar o delta entre o valor do touch do último update, e o touch do update seguinte.
Então vc pode somar esse valor do deltaPosition à posição atual do seu objeto, por exemplo:
- Código:
private void TouchMovement(){
Touch _touch = Input.touches[0];
if(_touch.phase == TouchPhase.Moved){
yourObject.position = new Vector2(yourObject.position.x +
_touch.deltaPosition.x * speed, yourObject.position.y +
_touch.deltaPosition.y * speed);
}
}
Então ali onde tem o "yourObject" vc troca pela referencia do transform do seu objeto, e vc pode criar uma variável do tipo float chamada "speed" pra gerenciar a velocidade da movimentação do objeto, já q eu pressuponho q vc esteja chamando o método do Touch no Update.
Atho- Membro
- PONTOS : 1903
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Re: Como criar um offset fluido na Unity?
Testei e, na verdade o objeto enlouqueceu indo pra todos os lados até com o speed sendo 1MayLeone escreveu:Vc pode usar o deltaPosition do touch pra pegar o delta entre o valor do touch do último update, e o touch do update seguinte.
Então vc pode somar esse valor do deltaPosition à posição atual do seu objeto, por exemplo:
- Código:
private void TouchMovement(){
Touch _touch = Input.touches[0];
if(_touch.phase == TouchPhase.Moved){
yourObject.position = new Vector2(yourObject.position.x +
_touch.deltaPosition.x * speed, yourObject.position.y +
_touch.deltaPosition.y * speed);
}
}
Então ali onde tem o "yourObject" vc troca pela referencia do transform do seu objeto, e vc pode criar uma variável do tipo float chamada "speed" pra gerenciar a velocidade da movimentação do objeto, já q eu pressuponho q vc esteja chamando o método do Touch no Update.
Atho- Membro
- PONTOS : 1903
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Re: Como criar um offset fluido na Unity?
O objeto q vc está tentando mover é um game object ou um rect transform?
Última edição por MayLeone em Ter Out 05, 2021 2:41 pm, editado 2 vez(es)
Re: Como criar um offset fluido na Unity?
Um gameObjectMayLeone escreveu:O objeto q vc está tentando mover é um game object ou um rect transform?
Atho- Membro
- PONTOS : 1903
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Re: Como criar um offset fluido na Unity?
Tenta colocar um speed menor, eu uso aqui o valor 0.004F e fica um valor interessante.
Re: Como criar um offset fluido na Unity?
Só um detalhe. O deltaPosition é só pra vector2, certo? E o meu game é em 3D e preciso modificar em zMayLeone escreveu:Tenta colocar um speed menor, eu uso aqui o valor 0.004F e fica um valor interessante.
Atho- Membro
- PONTOS : 1903
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Re: Como criar um offset fluido na Unity?
Ahhh aí as coisas mudam de cenário... Tente isso:
- Código:
element.position = new Vector3(element.position.x +
_touch.deltaPosition.x * speed, element.position.y, element.position.z * speed + _touch.deltaPosition.y);
Tópicos semelhantes
» Como criar inventário simples no unity
» Como criar inventário simples no unity
» Como criar um pistao hidráulico no unity
» Como criar um jogo de sobrevivência - Unity 5
» Como criar um Sistema de Trein na Unity.
» Como criar inventário simples no unity
» Como criar um pistao hidráulico no unity
» Como criar um jogo de sobrevivência - Unity 5
» Como criar um Sistema de Trein na Unity.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos