// Update is called once per frame void Update() { Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); if (Input.GetMouseButtonDown(0)) { if (Physics2D.OverlapPoint(mousePos) == myCollider) { this.StartDrag(mousePos); } } else if (Input.GetMouseButtonUp(0) && this.mouseOffset.IsValid) { // Set our sorting order based on the sorting orders // of anything beneath us. setOrderInLayer(); this.mouseOffset = new OptionalVector2(); // i.e. no longer valid } else if (Input.GetMouseButton(0) && this.mouseOffset.IsValid) { var adjustedPositon = mousePos - this.mouseOffset.Vector; this.transform.position = new Vector3( adjustedPositon.x, adjustedPositon.y, transform.position.z ); } }
public void StartDrag(Vector2 mousePos) { var xyPos = new Vector2(this.transform.position.x, this.transform.position.y); this.mouseOffset = new OptionalVector2(mousePos - xyPos); print(string.Format("Mouse down while mouse over card! Mouse offset = {0}", mouseOffset)); this.currentLayerID = SortingLayer.NameToID("Moving"); }
// Start is called before the first frame update void Start() { // this.myRenderer = this.GetComponent<SpriteRenderer>(); this.myCollider = this.GetComponent <Collider2D>(); this.mouseOffset = new OptionalVector2(); // i.e. not valid this.currentSortingOrder = front.sortingOrder; this.currentLayerID = front.sortingLayerID; this.defaultLayerID = this.currentLayerID; this.front.enabled = flippedOver; this.back.enabled = !flippedOver; }
// Start is called before the first frame update void Start() { myCollider = GetComponent <Collider2D>(); mySpriteRenderer = GetComponent <SpriteRenderer>(); if (myCollider == null || mySpriteRenderer == null) { Debug.LogError("Token object MUST have collider and sprite renderer!"); return; } this.mouseOffset = new OptionalVector2(); // i.e. not valid this.currentLayerID = mySpriteRenderer.sortingLayerID; this.defaultLayerID = this.currentLayerID; }
// Update is called once per frame void Update() { // Don't do anything if the card is part of a deck. var deckBehaviour = GetComponentInParent <DeckBehaviour>(); if (deckBehaviour != null) { return; } Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); if (Input.GetMouseButtonDown(0)) { if (Physics2D.OverlapPoint(mousePos) == myCollider) { this.StartDrag(mousePos); } } else if (Input.GetMouseButtonUp(0) && this.mouseOffset.IsValid) { SetOrderInLayer(); this.mouseOffset = new OptionalVector2(); // i.e. no longer valid } else if (Input.GetMouseButton(0) && this.mouseOffset.IsValid) { var adjustedPositon = mousePos - this.mouseOffset.Vector; this.transform.position = new Vector3( adjustedPositon.x, adjustedPositon.y, transform.position.z ); } if (Input.GetButtonDown("Flip")) { if (Physics2D.OverlapPoint(mousePos) == myCollider) { this.flippedOver = !this.flippedOver; } } if (Input.GetButtonDown("Replace")) { if (Physics2D.OverlapPoint(mousePos) == myCollider) { print("replace button pressed."); // action is not valid if the card is not in collision with a deck var overlapResults = new List <Collider2D>(); var contactFilter = new ContactFilter2D(); var numOverlaps = this.myCollider.OverlapCollider(contactFilter.NoFilter(), overlapResults); if (numOverlaps == 0) { print("Not overlapping with anything."); } else { DeckBehaviour deck = null; foreach (Collider2D collider in overlapResults) { var parent = collider.transform.parent; if (parent != null) { deck = parent.GetComponent <DeckBehaviour>(); if (deck != null) { break; } } } if (deck == null) { print("Not overlapping with deck."); } else { print(string.Format("About to reattach to deck {0}", deckBehaviour)); // tell the deck to take us deck.RestoreCard(transform); // set our parent to the deck transform.parent = deck.transform; transform.position = deck.transform.position; flippedOver = false; // reshuffle the deck deck.Shuffle(); } } } } this.front.enabled = flippedOver; this.back.enabled = !flippedOver; // Ensure front and back faces are consistent with this card's sorting position this.front.sortingLayerID = this.currentLayerID; this.front.sortingOrder = this.currentSortingOrder; this.back.sortingLayerID = this.currentLayerID; this.back.sortingOrder = this.currentSortingOrder; }