Limitar area de click do mouse
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Limitar area de click do mouse
Em um cenario 2D, estou tentando selecionar objetos com o mouse, mas não quero deixar o jogador selecionar os objetos da camera toda, só apenas em uma area em volta do personagem. Estou utilizando:
mas assim pego da camera toda.
- Código:
Camera.main.ScreenToWorldPoint (Input.mousePosition);
mas assim pego da camera toda.
Re: Limitar area de click do mouse
dipode escreveu:Em um cenario 2D, estou tentando selecionar objetos com o mouse, mas não quero deixar o jogador selecionar os objetos da camera toda, só apenas em uma area em volta do personagem. Estou utilizando:
- Código:
Camera.main.ScreenToWorldPoint (Input.mousePosition);
mas assim pego da camera toda.
:/ tenta usar um Vector3.Distance para limitar a área que o jogador pode selecionar... caso não der certo coloca o script completo .-.
Re: Limitar area de click do mouse
Não entendi como usaria o vector.distance aqui:PauloFR escreveu:dipode escreveu:Em um cenario 2D, estou tentando selecionar objetos com o mouse, mas não quero deixar o jogador selecionar os objetos da camera toda, só apenas em uma area em volta do personagem. Estou utilizando:
- Código:
Camera.main.ScreenToWorldPoint (Input.mousePosition);
mas assim pego da camera toda.
:/ tenta usar um Vector3.Distance para limitar a área que o jogador pode selecionar... caso não der certo coloca o script completo .-.
- Código:
if (Input.GetMouseButtonDown (0)) {
Vector2 posicaoMouse = Camera.main.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (posicaoMouse , Vector2.zero);
if (hit.collider != null) {
if (hit.collider.tag == "MeuObjeto") {
Destroy (hit.collider.gameObject);
}
}
}
Re: Limitar area de click do mouse
Já tentou usar um Event Sytem pra detectar onde o player ta clicando, e o jogo responder apartir disso?
É um pouco complicado de se entender no inicio, mais é bem de boa.
É um pouco complicado de se entender no inicio, mais é bem de boa.
Re: Limitar area de click do mouse
marcos4503 escreveu:Já tentou usar um Event Sytem pra detectar onde o player ta clicando, e o jogo responder apartir disso?
É um pouco complicado de se entender no inicio, mais é bem de boa.
Não, mas esse código já detecta onde o player está clicando, mas eu preciso que ele só detecte em um circulo em volta do personagem, quando passar dele que o clique seja ignorado. Só que não to sabendo limitar essa area do mouse, com o codigo acima é detectado na camera toda.
Imagem exemplo: https://servimg.com/view/19696763/1
Re: Limitar area de click do mouse
dipode escreveu:Não entendi como usaria o vector.distance aqui:PauloFR escreveu:dipode escreveu:Em um cenario 2D, estou tentando selecionar objetos com o mouse, mas não quero deixar o jogador selecionar os objetos da camera toda, só apenas em uma area em volta do personagem. Estou utilizando:
- Código:
Camera.main.ScreenToWorldPoint (Input.mousePosition);
mas assim pego da camera toda.
:/ tenta usar um Vector3.Distance para limitar a área que o jogador pode selecionar... caso não der certo coloca o script completo .-.
- Código:
if (Input.GetMouseButtonDown (0)) {
Vector2 posicaoMouse = Camera.main.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (posicaoMouse , Vector2.zero);
if (hit.collider != null) {
if (hit.collider.tag == "MeuObjeto") {
Destroy (hit.collider.gameObject);
}
}
}
Tente adicionar isso aqui +/- no script....
- Código:
public float DistanciaMax;
public RayCast hit;
void Update () {
float DistanciaAtual;
DistanciaAtual = Vector3.Distance (this.transform.position,hit.collider.tag == "MeuObjeto".transform.position);
if (DistanciaAtual <= DistanciaMax) {
if (Input.GetMouseButtonDown (0)) {
Vector2 posicaoMouse = Camera.main.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (posicaoMouse , Vector2.zero);
if (hit.collider != null) {
if (hit.collider.tag == "MeuObjeto") {
Destroy (hit.collider.gameObject);
}
}
}
}
}
Irei abrir o Unity aqui e te explicar corretamente como adicionar :/ mas acho que seria +/- assim mesmo...
Re: Limitar area de click do mouse
PauloFR escreveu:dipode escreveu:Não entendi como usaria o vector.distance aqui:PauloFR escreveu:dipode escreveu:Em um cenario 2D, estou tentando selecionar objetos com o mouse, mas não quero deixar o jogador selecionar os objetos da camera toda, só apenas em uma area em volta do personagem. Estou utilizando:
- Código:
Camera.main.ScreenToWorldPoint (Input.mousePosition);
mas assim pego da camera toda.
:/ tenta usar um Vector3.Distance para limitar a área que o jogador pode selecionar... caso não der certo coloca o script completo .-.
- Código:
if (Input.GetMouseButtonDown (0)) {
Vector2 posicaoMouse = Camera.main.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (posicaoMouse , Vector2.zero);
if (hit.collider != null) {
if (hit.collider.tag == "MeuObjeto") {
Destroy (hit.collider.gameObject);
}
}
}
Tente adicionar isso aqui +/- no script....
- Código:
public float DistanciaMax;
public RayCast hit;
void Update () {
float DistanciaAtual;
DistanciaAtual = Vector3.Distance (this.transform.position,hit.collider.tag == "MeuObjeto".transform.position);
if (DistanciaAtual <= DistanciaMax) {
if (Input.GetMouseButtonDown (0)) {
Vector2 posicaoMouse = Camera.main.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (posicaoMouse , Vector2.zero);
if (hit.collider != null) {
if (hit.collider.tag == "MeuObjeto") {
Destroy (hit.collider.gameObject);
}
}
}
}
}
Irei abrir o Unity aqui e te explicar corretamente como adicionar :/ mas acho que seria +/- assim mesmo...
Esse codigo ai não compilaria, a sintaxe ta incorreta, algo assim:
- Código:
if (objHumano.GetComponent<interacaoDoutor> ().objetoAtual != null) {
if (objHumano.GetComponent<interacaoDoutor> ().objetoAtual.name == "marreta") {
float distanciaAtual;
distanciaAtual = Vector2.Distance (this.transform.position, Camera.main.ScreenToWorldPoint (Input.mousePosition));
if (distanciaAtual <= distanciaMax) {
if (Input.GetMouseButtonDown (0)) {
Vector2 posicaoMouse = Camera.main.ScreenToWorldPoint (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (posicaoMouse, Vector2.zero);
if (hit.collider != null) {
if (hit.collider.tag == "Pedra") {
Destroy (hit.collider.gameObject);
}
}
}
}
}
}
Eu teria que fazer o calculo do float distanciaMax, isso que não sei fazer, é um circulo, então envolve o raio dele, se o personagem anda a todo momento a distancia teria q mudar toda hora, não sei direito, esse codigo ai que escrevi tbm n deve funcionar.
Re: Limitar area de click do mouse
dipode escreveu:Eu teria que fazer o calculo do float distanciaMax, isso que não sei fazer, é um circulo, então envolve o raio dele, se o personagem anda a todo momento a distancia teria q mudar toda hora, não sei direito, esse codigo ai que escrevi tbm n deve funcionar.
Vo fazer aqui +/- e te passo o código ;-; mas acho que o correto seria utilizar um Vector2.Distance mesmo...
Acho que daq uns 20m já te explico como fazer isso...
Re: Limitar area de click do mouse
PauloFR escreveu:dipode escreveu:Eu teria que fazer o calculo do float distanciaMax, isso que não sei fazer, é um circulo, então envolve o raio dele, se o personagem anda a todo momento a distancia teria q mudar toda hora, não sei direito, esse codigo ai que escrevi tbm n deve funcionar.
Vo fazer aqui +/- e te passo o código ;-; mas acho que o correto seria utilizar um Vector2.Distance mesmo...
Acho que daq uns 20m já te explico como fazer isso...
Testei o código aqui e funciona sim, só não sei se é a melhor maneira de fazer, se fizer de outro jeito posta ai, sempre é bom aprender mais de uma forma de fazer as coisas.
Re: Limitar area de click do mouse
A melhor forma de fazer é por Vector2.Distance mesmo mas também funciona com a "void OnMouseEnter" e "OnMouseExit"
tipo você faz um collisor em forma de circulo,cria um script com uma static bool que permita o click,coloca a void OnMouseEnter para ativar a bool e depois usa o OnMouseExit para desativar a bool...
ai no caso para fazer a bool permitir o click você teria que verificar sempre se a bool está ativa...
não consegui fazer um script de click funcional aqui mas assim também funciona ;-;
tipo você faz um collisor em forma de circulo,cria um script com uma static bool que permita o click,coloca a void OnMouseEnter para ativar a bool e depois usa o OnMouseExit para desativar a bool...
ai no caso para fazer a bool permitir o click você teria que verificar sempre se a bool está ativa...
não consegui fazer um script de click funcional aqui mas assim também funciona ;-;
Re: Limitar area de click do mouse
PauloFR escreveu:A melhor forma de fazer é por Vector2.Distance mesmo mas também funciona com a "void OnMouseEnter" e "OnMouseExit"
tipo você faz um collisor em forma de circulo,cria um script com uma static bool que permita o click,coloca a void OnMouseEnter para ativar a bool e depois usa o OnMouseExit para desativar a bool...
ai no caso para fazer a bool permitir o click você teria que verificar sempre se a bool está ativa...
não consegui fazer um script de click funcional aqui mas assim também funciona ;-;
De boa, para meu caso então seria Vector2.Distance mesmo, agradeço pela ajuda, fiquei horas queimando a mente e não me veio Vector2.Distance na cabeça kkkk Tópico resolvido.
Tópicos semelhantes
» Limitar area de movimento da Camera
» [RESOLVIDO] Alterar área de click (mira) no touchscreen
» click mouse
» Sumir objeto com click do mouse
» Transmitir Obejto atravez do click do mouse
» [RESOLVIDO] Alterar área de click (mira) no touchscreen
» click mouse
» Sumir objeto com click do mouse
» Transmitir Obejto atravez do click do mouse
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos