// Use this for initialization protected void Start() { // setting transform min and max fixed on to room corners, as they aren't taken into consideration // mode is also arbitrarily set to box CurrentAssignee = null; Room parentRoom = GetComponentInParent <Room>(); if (parentRoom == null) { Debug.Log("nie umiesz"); parentRoom = GetComponentInParent <RoomPuzzleAssign>(); } SpriteRenderer bgSprite = parentRoom.GetComponent <SpriteRenderer>(); Transform bgTransform = parentRoom.GetComponent <Transform>(); _vMin = bgTransform.localToWorldMatrix * bgSprite.sprite.rect.min; _vMax = bgTransform.localToWorldMatrix * bgSprite.sprite.rect.max; // assigning callback functions to inputmanager events InputManager.Instance.OnInputClickDown.AddListener(OnPickUp); InputManager.Instance.OnInputClickUp.AddListener(OnPutDown); InputManager.Instance.OnInputMoveExclusive.AddListener(OnDrag); _beginPosition = GetComponent <Transform>().position; _beginScale = GetComponent <Transform>().localScale; _textMesh = GetComponentInChildren <TextMesh>(); _textMesh.GetComponent <Renderer>().sortingLayerID = GetComponent <Renderer>().sortingLayerID; _textMesh.GetComponent <Renderer>().sortingOrder = 100 + GetComponent <Renderer>().sortingOrder; }
protected void OnPutDown(Vector2 screenPos, Collider2D hitCollider2D) { if ((hitCollider2D != null && hitCollider2D.gameObject == gameObject && !IsAssigned) || _isDrag) { Transform trans = GetComponent <Transform>(); trans.localScale /= PickedUpScaleMultiplier; trans.localPosition = new Vector3(trans.localPosition.x, trans.localPosition.y, trans.localPosition.z + 1.0f); trans = _textMesh.GetComponent <Transform>(); trans.localPosition = new Vector3(trans.localPosition.x, trans.localPosition.y, trans.localPosition.z + 1.0f); SpriteRenderer sr = GetComponent <SpriteRenderer>(); sr.sortingOrder = 0; if (CurrentAssignee != null) { CurrentAssignee.CurrentAssignable = null; CurrentAssignee = null; } RaycastHit2D[] hits = InputManager.Instance.GetRaycastHitsUnderCursor(); int l = hits.Length; Vector3 lerpTargetPosition = _beginPosition; Vector3 lerpTargetScale = _beginScale; AssigneeObject assignee = null; for (int i = 0; i < l; ++i) { if (hits[i].collider != null && (assignee = hits[i].collider.GetComponent <AssigneeObject>()) != null && assignee.CurrentAssignable == null) { lerpTargetPosition = assignee.AssignableSnapTransform.position; lerpTargetScale = assignee.AssignableSnapTransform.localScale; assignee.CurrentAssignable = this; CurrentAssignee = assignee; if (assignee == Assignee) { _tempAssignee = assignee; } break; } } _isDrag = false; StartCoroutine(FlyToPositionCoroutine(GetComponent <Transform>().position, lerpTargetPosition, GetComponent <Transform>().localScale, lerpTargetScale, PutDownPositionFixTimeSeconds)); } }
protected void OnPickUp(Vector2 screenPos, Collider2D hitCollider2D) { if (_isDrag) { GetComponent <Transform>().localScale /= PickedUpScaleMultiplier; } if (hitCollider2D != null && hitCollider2D.gameObject == gameObject && !IsAssigned) { if (CurrentAssignee != null) { CurrentAssignee.CurrentAssignable = null; CurrentAssignee = null; } Transform trans = GetComponent <Transform>(); trans.localScale *= PickedUpScaleMultiplier; trans.localPosition = new Vector3(trans.localPosition.x, trans.localPosition.y, trans.localPosition.z - 1.0f); trans = _textMesh.GetComponent <Transform>(); trans.localPosition = new Vector3(trans.localPosition.x, trans.localPosition.y, trans.localPosition.z - 1.0f); SpriteRenderer sr = GetComponent <SpriteRenderer>(); sr.sortingOrder = 99; _isDrag = true; } }