- Home /
how to drag an object using 2d raycasts
Hi, I am making a kids game where three shapes randomly generate and you have to drag the shape to a monster(right now its a square but it will be a monster) who checks to see if it is the right shape or not. I am having problems with the dragging bit.I have been trying to use RaycCasting to get information on the object that i clicked then snap the object that I clicked to the mouse until the mouse is let go when I use GetMouseButtonUp to see when let go. I kinda got this working but I couldn't get it to work in 2D (not because of using the wrong colliders but not being able to convert from 3D to 2D) So to put it simple how do I drag an object using the mouse then when I let go it has touched or is in the right spot? ps right now when I click a shape it disappears. `using UnityEngine;
public class ShapeScript : MonoBehaviour { public Camera cam; private GameObject shape; private Vector2 mouse;
void Update()
{
mouse = Input.mousePosition;
Ray ray = cam.ScreenPointToRay(mouse);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
if (Input.GetMouseButton(0))
{
if (hit.transform.tag == "PickUp")// if it is a shape
{
shape = hit.transform.gameObject;
shape.transform.position = Input.mousePosition;// move it to the mouse position
}
}
if (Input.GetMouseButtonUp(0))
{
if (GameObject.Find("Monster").GetComponent<MonsterScript>().rightSpot == true)// if its in the right spot when let go
{
Destroy(shape);
if (GameObject.Find("Spawner").GetComponent<SpawnPickUps>().correctShape == shape.transform.name)//if the shape = the correct shape
{
Debug.Log("right");
}
else
{
Debug.Log("wrong");
}
}
}
}
}
}
` and I also have a script on my monster to see if the are touching
using UnityEngine;
public class MonsterScript : MonoBehaviour
{
public bool rightSpot = false;
public void OnTriggerEnter(Collider other)
{
if(other.tag == "PickUp")
{
rightSpot = true;
}
}
public void OnTriggerExit(Collider other)
{
if(other.tag == "PickUp")
{
rightSpot = false;
}
}
}
Please let me know if you need more information If you can't tell I'm new to coding so please try and make it simple
and thank you.