Como reconhecer collider após o MouseUp e Instanciar novo obj quando outro for destruido ?
2 participantes
Página 1 de 1
Como reconhecer collider após o MouseUp e Instanciar novo obj quando outro for destruido ?
Boa noite galera,
Estou tentando desenvolver uma fase do jogo para meu projeto da faculdade que funciona da seguinte maneira:
Os "Xis" são os prefabs que devem ser spawnados 1 por vez da elipse cinza, ou seja, o próximo prefab só irá aparecer quando o anterior a ele, que foi spawnado, for destruído. E ele só deve ser destruído quando reconhecer a colisão com um dos retângulos.
A maneira que pensei, essa colisão só deve ser reconhecida quando o ButtonMouseUp(0) estiver ativo.
Em cada prefab eu cologuei o script abaixo, onde eu consigo realizar o drag&drop dos mesmos com o mouse. Também é só com esse script que consigo que a colisão seja detectada, mas só quando o mouse está dragging.
A elipse cinza contem este script no qual tentei fazer com que as colisões fossem reconhecidas por ele, mas não deu certo:
Enfim, não sei se ficou claro, mas se alguém estiver disposto a ajudar e tiver alguma duvida posso tentar esclarecer de outra forma.
Desde já agradeço qualquer ajuda.
Estou tentando desenvolver uma fase do jogo para meu projeto da faculdade que funciona da seguinte maneira:
Os "Xis" são os prefabs que devem ser spawnados 1 por vez da elipse cinza, ou seja, o próximo prefab só irá aparecer quando o anterior a ele, que foi spawnado, for destruído. E ele só deve ser destruído quando reconhecer a colisão com um dos retângulos.
A maneira que pensei, essa colisão só deve ser reconhecida quando o ButtonMouseUp(0) estiver ativo.
Em cada prefab eu cologuei o script abaixo, onde eu consigo realizar o drag&drop dos mesmos com o mouse. Também é só com esse script que consigo que a colisão seja detectada, mas só quando o mouse está dragging.
- Código:
private Vector3 offset;
private Vector3 screenPoint;
float eixoX = 10;
public GameObject prefab;
public bool dragging;
void Update () {
/*if (OnMouseUp && dragging) {
dragging = false;
Debug.Log ("FALLLLLLSOOOOOOO");
}*/
if (Input.GetMouseButtonDown (0)) {
}
if ((Input.GetMouseButtonUp (0))) {
//OnMouseUp ();
Debug.Log ("FALSO!!!");
}
}
void OnMouseDown(){
if (Input.GetMouseButtonDown (0)) {
screenPoint = Camera.main.WorldToScreenPoint (gameObject.transform.position);
offset = -gameObject.transform.position + Camera.main.ScreenToWorldPoint
(new Vector3 (Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
//dragging = true;
}
}
void OnMouseDrag(){
Vector3 mousePosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, eixoX);
Vector3 objPosition = Camera.main.ScreenToWorldPoint (mousePosition);
transform.position = objPosition;
}
void OnMouseUp(){
//dragging = false;
//Debug.Log ("SOLTOU");
}
/*void OnTriggerEnter2D (Collider2D col ){
if ((prefab.gameObject && (col.gameObject.CompareTag ("YellowLixo")) && (dragging = false) )){
Debug.Log ("Triscou");
}*/
void OnTriggerEnter2D (Collider2D col ){
if(col.gameObject.CompareTag ("YellowLixo")){
Debug.Log ("Triscou");
}
}
}
A elipse cinza contem este script no qual tentei fazer com que as colisões fossem reconhecidas por ele, mas não deu certo:
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class BehaviorsF2 : MonoBehaviour {
public Text cronometro;
public float contagem;
public GameObject[] detritos;
private MouseClick mouse;
//bool dragging;
void Start () {
mouse = FindObjectOfType (typeof(MouseClick)) as MouseClick;
//StartCoroutine ("Esperar10Seg");
Instantiate (detritos [Random.Range (0, detritos.Length)], transform.position,transform.rotation);
}
/*void OnEnable(){
triscou = false;
}*/
// Update is called once per frame
void Update () {
Tempo ();
if(Input.GetMouseButtonDown(0)){
//dragging = true;
}
if (Input.GetMouseButtonUp(0)){
//dragging = false;
}
/*if (mouseup () && dragging) {
dragging = false;
}*\
}
private void Tempo (){
if (contagem > 0.0f) {
contagem -= Time.deltaTime;
cronometro.text = contagem.ToString ("F1");
} else {
Application.LoadLevel ("Fase01");
}
}
/*IEnumerator Esperar10Seg(){
yield return new WaitForSeconds (10.0f);
Application.LoadLevel ("Fase01");
}*/
/*void OnTriggerEnter2D (Collider2D col ){
if ((transform.position = mouse.transform.position && !triscou)){
Debug.Log ("Triscou");
}*/
/*void OnTriggerEnter2D (Collider2D col ){
if ((col.gameObject.CompareTag ("YellowLixo")) && (mouse.dragging = false)) {
Debug.Log ("Triscou");
}
}*/
}
Enfim, não sei se ficou claro, mas se alguém estiver disposto a ajudar e tiver alguma duvida posso tentar esclarecer de outra forma.
Desde já agradeço qualquer ajuda.
ysrogers- Iniciante
- PONTOS : 2969
REPUTAÇÃO : 0
Respeito as regras :
Re: Como reconhecer collider após o MouseUp e Instanciar novo obj quando outro for destruido ?
Opa!
Se entendi bem, você quer que o objeto seja destruído somente quando estiver em colisão com um retângulo e no evento OnMouseUp, certo?
Para isso use uma booleana, por exemplo:
[list=linenums]
[*]void OnMouseUp(){
[*] if(noAlvo){
//destroi
}
}
[*] void OnTriggerEnter2D (Collider2D col ){
[*] if(comparatag){
noAlvo = true;
}
[*] }
[*] void OnTriggerExit2D (Collider2D col ){
if(comparatag){
noAlvo = false;
}
}
[/list]
Espero que ajude e qualquer coisa, só falar.
Se entendi bem, você quer que o objeto seja destruído somente quando estiver em colisão com um retângulo e no evento OnMouseUp, certo?
Para isso use uma booleana, por exemplo:
[list=linenums]
[*]void OnMouseUp(){
[*] if(noAlvo){
//destroi
}
}
[*] void OnTriggerEnter2D (Collider2D col ){
[*] if(comparatag){
noAlvo = true;
}
[*] }
[*] void OnTriggerExit2D (Collider2D col ){
if(comparatag){
noAlvo = false;
}
}
[/list]
Espero que ajude e qualquer coisa, só falar.
wischutz- Membro
- PONTOS : 3576
REPUTAÇÃO : 15
Respeito as regras :
Re: Como reconhecer collider após o MouseUp e Instanciar novo obj quando outro for destruido ?
Vlw amigo, era exatamente isso que tentei fazer e falhei miseravelmente. hehe...
Eu só não entendi o pq do onTriggerExit se quando a ação do MouseUp for ativada o objeto já será destruído.
Acho q não consegui acompanhar seu raciocínio. '-'
Se puder me explicar, ficaria muito agradecido.
Eu só não entendi o pq do onTriggerExit se quando a ação do MouseUp for ativada o objeto já será destruído.
Acho q não consegui acompanhar seu raciocínio. '-'
Se puder me explicar, ficaria muito agradecido.
ysrogers- Iniciante
- PONTOS : 2969
REPUTAÇÃO : 0
Respeito as regras :
Re: Como reconhecer collider após o MouseUp e Instanciar novo obj quando outro for destruido ?
É pra quando você tirar do gatilho e largar o botão do mouse ele não ser destruído. Se o que você quer é que ele apenas seja destruído se estiver "dentro" da lixeira específica, então se ele não estiver, não pode ter o mesmo comportamento, por isso mudamos o valor da booleana quando sai do gatilho.
Qualquer coisa, só falar!
Qualquer coisa, só falar!
wischutz- Membro
- PONTOS : 3576
REPUTAÇÃO : 15
Respeito as regras :
Re: Como reconhecer collider após o MouseUp e Instanciar novo obj quando outro for destruido ?
Então o If (noAlvo) detecta automaticamente que é true, sem a necessidade de declarar que é true? Por exemplo, no meu entendimento eu o declararia da seguinte forma:
if( noAlvo == true){
Destroy
}
if( noAlvo == true){
Destroy
}
ysrogers- Iniciante
- PONTOS : 2969
REPUTAÇÃO : 0
Respeito as regras :
Re: Como reconhecer collider após o MouseUp e Instanciar novo obj quando outro for destruido ?
Sim.
if(noAlvo) é a mesma coisa que if(noAlvo == true) e if(!noAlvo) é a mesma coisa que if(noAlvo == false).
Uso assim pq fica mais curto e menos poluído.
if(noAlvo) é a mesma coisa que if(noAlvo == true) e if(!noAlvo) é a mesma coisa que if(noAlvo == false).
Uso assim pq fica mais curto e menos poluído.
wischutz- Membro
- PONTOS : 3576
REPUTAÇÃO : 15
Respeito as regras :
Tópicos semelhantes
» como fazer o player aparecer do outro lado da porta quando muda de cena?
» Como faço pra um colisor não reconhecer outro colisor sem usar IsTrigger
» Como Fazer Texto Aparecer Logo Apos entrar em um Collider
» Como criar um objeto só quando colider com outro?
» como q eu faço quando aperto um botão UI Aparece outro Canvas ?
» Como faço pra um colisor não reconhecer outro colisor sem usar IsTrigger
» Como Fazer Texto Aparecer Logo Apos entrar em um Collider
» Como criar um objeto só quando colider com outro?
» como q eu faço quando aperto um botão UI Aparece outro Canvas ?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos