예제 #1
0
    // 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;
    }
예제 #2
0
    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));
        }
    }
예제 #3
0
    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;
        }
    }