Question by
alifianrc · Mar 15, 2020 at 07:49 PM ·
onmousedowninput.touchonmouseup
Why my input both mouse and touch can't detected?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class DragAndDropGame : MonoBehaviour { [SerializeField] private Transform animalPlace;
private Vector2 initialPosition;
private Vector2 mousePosition;
private float deltax, deltay;
public static bool locked = false;
void Start()
{
initialPosition = transform.position;
Debug.Log("Start Sucsess");
Debug.Log(animalPlace.position.x);
Debug.Log(animalPlace.position.y);
Debug.Log(initialPosition.x);
Debug.Log(initialPosition.y);
}
private void Update()
{
if (Input.touchCount > 0)
//Touch firstTouch = Input.GetTouch(0);
//if (firstTouch.phase == TouchPhase.Began)
{
Debug.Log("Input Beta Sucsess");
}
if (Input.touchCount > 0 && !locked)
{
Touch touch = Input.GetTouch(0);
Vector2 touchPos = Camera.main.ScreenToWorldPoint(touch.position);
Debug.Log("Input Sucsess");
switch (touch.phase)
{
case TouchPhase.Began:
if (GetComponent<BoxCollider2D>() == Physics2D.OverlapPoint(touchPos))
{
deltax = touchPos.x - transform.position.x;
deltay = touchPos.y - transform.position.y;
Debug.Log("Began Sucsess");
}
break;
case TouchPhase.Moved:
if (GetComponent<BoxCollider2D>() == Physics2D.OverlapPoint(touchPos))
{
transform.position = new Vector2(touchPos.x - deltax, touchPos.y - deltay);
Debug.Log("Moved Sucsess");
}
break;
case TouchPhase.Ended:
if (Mathf.Abs(transform.position.x - animalPlace.position.x) <= 0.5f && Mathf.Abs(transform.position.y - animalPlace.position.y) <= 0.5f)
{
transform.position = new Vector2(animalPlace.position.x, animalPlace.position.y);
locked = true;
Debug.Log("End Sucsess");
}
else
{
transform.position = new Vector2(initialPosition.x, initialPosition.x);
Debug.Log("Lock Sucsess");
}
break;
}
}
}
private void OnMouseDown()
{
Debug.Log("Mouse Down");
if (!locked)
{
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = new Vector2(mousePosition.x - deltax, mousePosition.y - deltay);
}
}
private void OnMouseUp()
{
Debug.Log("Mouse Up");
if (Mathf.Abs(transform.position.x - animalPlace.position.x) <= 0.5f && Mathf.Abs(transform.position.y - animalPlace.position.y) <= 0.5f)
{
transform.position = new Vector2(animalPlace.position.x, animalPlace.position.y);
locked = true;
}
else
{
transform.position = new Vector2(initialPosition.x, initialPosition.x);
}
}
}
Comment
Your answer
Follow this Question
Related Questions
I want to only open the keyboard when im using an inputfield onmouseup not onmousedown 1 Answer
Click detection suddenly stopped working 1 Answer
OnMouseDown/Drag/ets is not being called in WebGL build 0 Answers
How do I use Input.GetButton, instead of OnMouse() 1 Answer
mouse event when frame loss 1 Answer