using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class TokenBehaviour : MonoBehaviour { private Vector3 mOffset; private Vector3 startingPosition; private Vector3 slotPosition; private float mZCoord; private bool triggered = false; private Rigidbody rBody; private string pegSlotName; void Start() { rBody = GetComponent(); } private void OnMouseDown() { startingPosition = transform.position; mZCoord = Camera.main.WorldToScreenPoint(gameObject.transform.position).z; mOffset = gameObject.transform.position - GetMouseWorldPos(); } private void OnMouseUp() { if (triggered) { transform.position = slotPosition; rBody.velocity = Vector3.zero; } else { transform.position = startingPosition; rBody.velocity = Vector3.zero; } } private Vector3 GetMouseWorldPos() { Vector3 mousePoint = Input.mousePosition; mousePoint.z = mZCoord; return Camera.main.ScreenToWorldPoint(mousePoint); } private void OnMouseDrag() { transform.position = GetMouseWorldPos() + mOffset; transform.position = new Vector3(transform.position.x, 6, transform.position.z); } void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Trigger Volume")) { pegSlotName = (other.gameObject.name).ToString(); triggered = true; slotPosition = other.gameObject.transform.position; } } void OnTriggerExit(Collider other) { if (other.gameObject.CompareTag("Trigger Volume")) { triggered = false; } } }