Drag and drop for 2D tower of hanoi game
Hi. I'm a complete noob with Unity, and I want to make myself a small Tower Of Hanoi type game.
I could use some advice on how to do this, but for now, I've settled for a drag and drop system - the player can just drag the discs (or in this case, a panda) sideways from one tower (bamboo) to another.
I looked up some resources online, and also came across the video from qull18creates, but I wasn't sure if using a canvas was the way to go, so I eventually settled on this video by K2niceStudio
Since there will be multiple pandas, I thought it best to put the script in the camera. Here's what I have so far:
using UnityEngine;
using System.Collections;
public class DraggingScript : MonoBehaviour
{
public GameObject objectToDrag;
public Vector3 objectCenterOriginal, objectCenterNew, objectMouseOffset, mousePosition;
RaycastHit hit;
public bool isDragging = false;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
// Click to Drag
if (Input.GetMouseButtonDown(0))
{
Debug.Log("Button Down");
Debug.Log(Input.mousePosition);
// If left mouse button is clicked
Ray lookForObject = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(lookForObject, out hit))
{
Debug.Log("hit!"); // <------ I've never seen this printed out
objectToDrag = hit.collider.gameObject;
objectCenterOriginal = objectToDrag.transform.position;
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
objectMouseOffset = mousePosition - objectCenterOriginal;
isDragging = true;
}
if (isDragging)
{
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
objectCenterNew = mousePosition;
objectToDrag.transform.position = new Vector3(objectCenterNew.x, objectCenterNew.y, objectCenterOriginal.z);
}
}
if (Input.GetMouseButtonUp(0))
{
Debug.Log("Button Up");
isDragging = false;
}
}
}
Unless I made a mistake somewhere, I think it's mostly identical to the video's, with the only exception (AFAIK) being there's already three images in my scene (background, foreground, panda), whereas the video only has one.
However, the video's code works. Mine doesn't. Putting debug logs in the code makes me believe the panda is not being fetched, even if I click on it directly.
Where did I go wrong?
I'm also open to advice, if there's a better way to do this overall.
Thanks.