[Unity 5] Como destruir objetos clickando neles?
2 participantes
Página 1 de 1
[Unity 5] Como destruir objetos clickando neles?
Ká estou novamente rsrsrs, ah valeu ao WeslleyFx, me ajudo mesmo no ultimo tópico, já tava ficando louco kkk, enfim queria saber como destruo objetos clickando neles, tipo:
Queria fazer com que o personagem veja algo no chão, então aparece a label e some, dizendo para ele clickar no objeto para pega-lo, então o player clicka no objeto, (um cubo qualquer) depois eu queria fazer com que o objeto fosse destruido e um outro fosse instanciado por prefab(com a forma de arma), só que eu tentei algumas maneiras, tipo colocando UI no cubo, usando a void OnClick(), mas não funcionou, "Ténkiiu" kkk
Queria fazer com que o personagem veja algo no chão, então aparece a label e some, dizendo para ele clickar no objeto para pega-lo, então o player clicka no objeto, (um cubo qualquer) depois eu queria fazer com que o objeto fosse destruido e um outro fosse instanciado por prefab(com a forma de arma), só que eu tentei algumas maneiras, tipo colocando UI no cubo, usando a void OnClick(), mas não funcionou, "Ténkiiu" kkk
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Como destruir objetos clickando neles?
bom vc pode usar o raycast para destruir o objeto
para isso precisaremos de um raio e um ponto de colisão
vc terá que criar uma layer para isso va no inspector e crie uma layer
na variável layerObject selecione a layer que vc crio
em distance coloque a distancie que o raio vai chegar
coloque o text UI na variável
se o raio colidir com algo que tenha a layer criada a variável collidedInObject vai ser verdadeira logo se a variável collidedInObject for verdadeira e apertamos o botão esquerdo do mouse
pegaremos o objeto que colidiu e guardaremos em uma variável local logo depois destruímos ela
agora esse outra pergunta parte de outra mecânica especifique mais se estiver algo pronto para arma como bag(Mochila) poste o script
para isso precisaremos de um raio e um ponto de colisão
vc terá que criar uma layer para isso va no inspector e crie uma layer
na variável layerObject selecione a layer que vc crio
em distance coloque a distancie que o raio vai chegar
coloque o text UI na variável
se o raio colidir com algo que tenha a layer criada a variável collidedInObject vai ser verdadeira logo se a variável collidedInObject for verdadeira e apertamos o botão esquerdo do mouse
pegaremos o objeto que colidiu e guardaremos em uma variável local logo depois destruímos ela
agora esse outra pergunta parte de outra mecânica especifique mais se estiver algo pronto para arma como bag(Mochila) poste o script
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Object : MonoBehaviour
{
public LayerMask layerObject;
public Text nameObject;
public float distace;
public bool collidedInObject = false;
void Start ()
{
nameObject.enabled = false;
}
void Update ()
{
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2));
RaycastHit hit;
collidedInObject = Physics.Raycast(ray, out hit, distace, layerObject);
if (collidedInObject)
{
GameObject destroyThisObject = hit.collider.gameObject;
if (Input.GetMouseButton(0))
{
Destroy(destroyThisObject);
}
}
nameObject.enabled = collidedInObject;
}
}
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [Unity 5] Como destruir objetos clickando neles?
Obrigado desde já, estou indo testar agora o script, eu não tenho a tal mochila pois é um sistema simples de pegar a arma, se pegar outra a anterior é jogada fora.
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Como destruir objetos clickando neles?
GENIAL !, rsrsrs eu ainda não usei outras bibliotecas além da default, achei muito legal a maneira que você fez esse script, já tinha ouvido falar de raycast mas nunca tinha usado, queria que se desse você me explicasse exatamente o por que de cada coisa estar lá, tipo eu queria entender, pra não ficar só no Ctrl + C Ctrl + V, entende ?
Algumas coisas que eu acho que entendi rsrs :
Está na void start fazendo com que no inicio não apareça o texto
ou seja desabilatando-o.
se o objeto se colidir com o mouse, e o botão do
mouse for apertado, então o objeto será destruído, se
você tá estranhando esse "nameObject.enabled = false;", é
que eu acho quando li o script, que não tinha nada que
desativasse o texto, apenas o que o ativa rsrs
Algumas coisas que eu acho que entendi rsrs :
- Código:
nameObject.enabled = false;
Está na void start fazendo com que no inicio não apareça o texto
ou seja desabilatando-o.
- Código:
if (collidedInObject)
{
GameObject destroyThisObject = hit.collider.gameObject;
if (Input.GetMouseButton(0))
{
Destroy(destroyThisObject);
nameObject.enabled = false;
}
}
se o objeto se colidir com o mouse, e o botão do
mouse for apertado, então o objeto será destruído, se
você tá estranhando esse "nameObject.enabled = false;", é
que eu acho quando li o script, que não tinha nada que
desativasse o texto, apenas o que o ativa rsrs
- Código:
nameObject.enabled = collidedInObject;
ScorpionG4mer- Avançado
- PONTOS : 3445
REPUTAÇÃO : 45
Áreas de atuação : Inciante no C#, Arruaceiro no Blender
Respeito as regras :
Re: [Unity 5] Como destruir objetos clickando neles?
bom o LayerMask funciona semelhante as layer de software de edição de imagens logo vc pode ver ou não as imagens
com raycast vc escolhe o que o raycast consegue ver
variável text usando o namespace UnityEngine.UI vc importa os Componentes de UI (User Interface)
logo um text contem um componente chamado text logo vc pode desativar
Ray e uma linha que parte infinitamente em algum sentido
pegamos a camera principal passamos a posição do raio que sera a o tamanho e altura da tela dividida por 2 logo ficara no meio
usado para obter informações de onde ele colidiu
bom um raycast retorna um bool
se colidiu ele retorna true se não retorna false
e passaremos essa informação para variável collidedInObject que uma variável do tipo bool
os parâmetros para o raycast e o raio o raycasthit a distance que o raio vai alcançar e as layer que o raio vai enxergar
logo se collidedInObject for true
criaremos uma variável local do GameObject para guarda o objeto que o raio colidiu
para conseguir guarda o objeto que o raio colidiu usamos
o nome da variável hit.collider.gameObject
se apertamos o botão ele irar destruir o objeto
como a variável collidedInObject so fica true quando colide com algo
logo usaremos ele para desativar o texto
pegamos a variável nameObject que um text e usamos o enabled
e irar pegar o componente text ira desativar se a collidedInObject for true ele irar ativar
espero que tenha dado uma clareada :D
com raycast vc escolhe o que o raycast consegue ver
variável text usando o namespace UnityEngine.UI vc importa os Componentes de UI (User Interface)
logo um text contem um componente chamado text logo vc pode desativar
Ray e uma linha que parte infinitamente em algum sentido
pegamos a camera principal passamos a posição do raio que sera a o tamanho e altura da tela dividida por 2 logo ficara no meio
- Código:
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
usado para obter informações de onde ele colidiu
- Código:
RaycastHit hit;
bom um raycast retorna um bool
se colidiu ele retorna true se não retorna false
e passaremos essa informação para variável collidedInObject que uma variável do tipo bool
os parâmetros para o raycast e o raio o raycasthit a distance que o raio vai alcançar e as layer que o raio vai enxergar
- Código:
collidedInObject = Physics.Raycast(ray, out hit, distace, layerObject);
logo se collidedInObject for true
criaremos uma variável local do GameObject para guarda o objeto que o raio colidiu
para conseguir guarda o objeto que o raio colidiu usamos
o nome da variável hit.collider.gameObject
se apertamos o botão ele irar destruir o objeto
- Código:
if (collidedInObject)
{
GameObject destroyThisObject = hit.collider.gameObject;
if (Input.GetMouseButton(0))
{
Destroy(destroyThisObject);
}
}
como a variável collidedInObject so fica true quando colide com algo
logo usaremos ele para desativar o texto
pegamos a variável nameObject que um text e usamos o enabled
e irar pegar o componente text ira desativar se a collidedInObject for true ele irar ativar
- Código:
nameObject.enabled = collidedInObject;
espero que tenha dado uma clareada :D
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Tópicos semelhantes
» Destruir objetos com Raycast
» Destruir Objetos Filhos
» Destruir todos os objetos em cena.
» Criar e destruir objetos secundários
» (AJUDA) DESTRUIR OBJETOS INSTANCIADOS
» Destruir Objetos Filhos
» Destruir todos os objetos em cena.
» Criar e destruir objetos secundários
» (AJUDA) DESTRUIR OBJETOS INSTANCIADOS
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos