Como criar uma mira que rotacione em torno do player e não ultrapasse os limites?
Página 1 de 1
Como criar uma mira que rotacione em torno do player e não ultrapasse os limites?
Olá pessoal, estou criando um joguinho 2D top-down e travei em algo bobo, mas que por algum motivo não estou conseguindo fazer...
A mira fica atrás do player, é um projeto pra PC e Mobile, mais focado no mobile, aonde fica a mira, será onde o jogador terá de colocar o dedo ou o mouse para rotacionar o player, o objeto se desloca no sentido contrário ao da mira, o problema é que a mira precisa ficar dentro dos limites estabelecidos, não podendo tocar a região do player, nem se afastar muito dele, podendo assim, somente dar voltas em torno do player. Já tentei Vector2.Distance, já tentei Mathf.Clamp no Transform, mas nada funcionou como deveria ou eu não soube usar da maneira correta.
A imagem abaixo pode esclarecer melhor as coisas...
https://imgur.com/afB76Uq
Meu código está funcionando, mas não como deveria, caso queiram dar uma olhada, mas não recomendo rs
Conto com o apoio e a paciência de vocês, vocês são incríveis, valeu!
A mira fica atrás do player, é um projeto pra PC e Mobile, mais focado no mobile, aonde fica a mira, será onde o jogador terá de colocar o dedo ou o mouse para rotacionar o player, o objeto se desloca no sentido contrário ao da mira, o problema é que a mira precisa ficar dentro dos limites estabelecidos, não podendo tocar a região do player, nem se afastar muito dele, podendo assim, somente dar voltas em torno do player. Já tentei Vector2.Distance, já tentei Mathf.Clamp no Transform, mas nada funcionou como deveria ou eu não soube usar da maneira correta.
A imagem abaixo pode esclarecer melhor as coisas...
https://imgur.com/afB76Uq
Meu código está funcionando, mas não como deveria, caso queiram dar uma olhada, mas não recomendo rs
- Código:
public class Aim : MonoBehaviour
{
public Transform defaultPosition;
public Transform playerPosition;
public float speed = 0.125f;
void Update()
{
if (Input.GetAxis("Fire1") > 0) {
//ENTRADA DOS CONTROLES
Vector3 mousePosition = Input.mousePosition;
mousePosition = Camera.main.ScreenToWorldPoint(mousePosition);
//LIMITANDO DESLOCAMENTO DA MIRA
mousePosition.x = Mathf.Clamp(mousePosition.x, playerPosition.position.x - 1, playerPosition.position.x + 1);
mousePosition.y = Mathf.Clamp(mousePosition.y, playerPosition.position.y - 1, playerPosition.position.y + 1);
//MOVIMENTAÇÃO
transform.position = mousePosition;
Debug.Log(Vector2.Distance(mousePosition, playerPosition.position));
} else {
Vector2 smoothedPosition = Vector3.Lerp(transform.position, defaultPosition.position, speed);
transform.position = smoothedPosition;
}
}
}
Conto com o apoio e a paciência de vocês, vocês são incríveis, valeu!
MateusPignatti- Iniciante
- PONTOS : 3068
REPUTAÇÃO : 2
Respeito as regras :
Re: Como criar uma mira que rotacione em torno do player e não ultrapasse os limites?
Consegui! Passei um tempo fora da Unity, mas agora me lembrei que é possível fazer um objeto rotacionar em torno de um eixo apenas criando um objeto vazio como pivot. Enfim, espero que essa dúvida ajude alguém que esteja perdido como eu estava haha.
MateusPignatti- Iniciante
- PONTOS : 3068
REPUTAÇÃO : 2
Respeito as regras :
Tópicos semelhantes
» Como criar a mira de armas em personagens em terceira pessoa
» Como criar um Game Over e voltar para a fase em que o player morreu
» Como faz a câmera seguir e gira em torno do jogador
» Como definir limites de zoom para um objeto inspecionado?
» [Dúvida] Como fazer um sistema de mira 2D?
» Como criar um Game Over e voltar para a fase em que o player morreu
» Como faz a câmera seguir e gira em torno do jogador
» Como definir limites de zoom para um objeto inspecionado?
» [Dúvida] Como fazer um sistema de mira 2D?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos