Синтаксис:
Используется csharp
GameObject getTarget;
bool isMouseDragging;
Vector3 offsetValue;
Vector3 positionOfScreen;
private GameObject ActualObject;
void Update()
{
//Mouse Button Press Down
if (Input.GetMouseButtonDown(0))
{
RaycastHit2D aHit = new RaycastHit2D(); //инициализируем луч.
if (Camera.main.orthographic)
{
// Присваиваем нашему лучу позицию мыши при клике .
aHit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
}
if (aHit.transform.gameObject != ActualObject)
{
ActualObject = aHit.transform.gameObject;
}
getTarget = ActualObject;
if (getTarget != null)
{
isMouseDragging = true;
//Converting world position to screen position.
positionOfScreen = Camera.main.WorldToScreenPoint(getTarget.transform.position);
offsetValue = getTarget.transform.position - Camera.main.ScreenToWorldPoint(new Vector2(Input.mousePosition.x, Input.mousePosition.y));
}
}
//Mouse Button Up
if (Input.GetMouseButtonUp(0))
{
isMouseDragging = false;
}
//Is mouse Moving
if (isMouseDragging)
{
Vector2 currentScreenSpace = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
Vector2 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offsetValue;
getTarget.transform.position = currentPosition;
}
}