- Home /
Question by
RgClube · Nov 29, 2020 at 07:43 PM ·
script.onmousedownraycasthit2dselecting objects
How to make the selected object destroyed with another selected object
Hello everyone, I have already made the instantiated objects move to a certain position when you click on them, now it remains to make sure that two identical selected objects are destroyed. I am having problems with this implementation, since I do not know how to properly store information about the previous clicks. Here you can see some of my attemps, the first script that attached to a camera: if (Input.GetMouseButtonDown(0)) { Vector2 origin = new Vector2(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
RaycastHit2D hit = Physics2D.Raycast(origin, Vector2.zero, 0f);
if (hit.transform.gameObject.tag == "Ball" && hit.collider.GetComponent<LogicOfBall>().numberOfInvokes == 1 ) {
Debug.Log(i);
NumPos++;
if(NumPos == 6)
{
if(goFirstPos == false)
{
NumPos = 0;
goFirstPos = true;
}
else
{
if(goSecondPos == false )
{
NumPos =1;
goSecondPos = true;
}
else
{
if(goThirdPos == false)
{
NumPos = 2;
goThirdPos = true;
}
else
{
if(goForthPos == false)
{
NumPos = 3;
goForthPos = true;
} else
{
if(goFivePos == false)
{
NumPos = 4;
goFivePos = true;
} else
{
if(goSixPos == false)
{
NumPos = 5;
goSixPos = true;
}
}
}
}
}
}
}
} else if(hit.transform.gameObject.tag == "Ball")
{
if(hit.collider.GetComponent<LogicOfBall>().objectSelected ==true)
{
oneObjectSelected = true;
}
if(hit.collider.GetComponent<LogicOfBall>().objectSelected == true && oneObjectSelected == true)
{
destroySelectedObjects = true;
}
}
}
And the second is attached to the object itself, which is a prefab:
public Transform[] tentacle;
public float speed = 10f;
private bool ballHitted = false;
BallHit ballHit;
int i = 0;
public int numberOfInvokes = 0;
public bool objectSelected;
// Start is called before the first frame update
void Start()
{
ballHit = FindObjectOfType<BallHit>();
//Debug.Log(numberOfInvokes);
}
// Update is called once per frame
void Update()
{
//Debug.Log(numberOfInvokes);
if(ballHitted == true)
{
transform.position = Vector2.MoveTowards(transform.position, tentacle[i].transform.position, speed * Time.deltaTime);
}
}
private void OnMouseDown() {
if(ballHitted == false)
{
i=ballHit.NumPos;
ballHitted = true;
}
numberOfInvokes++;
if(numberOfInvokes>1)
{
ObjectSelected();
}
if(ballHit.destroySelectedObjects == true)
{
Destroy(gameObject);
}
}
private void ObjectSelected()
{
Debug.Log("Object Selected");
objectSelected = true;
}
Thanks for any help!
Comment