// Update is called once per frame void FixedUpdate() { switch (cs) { case CardState.WAITING: break; case CardState.MOVING: Vector3 newDir = (desiredPos - root.position).normalized; if (Mathf.Cos(Vector3.Angle(dir, newDir)) < 0) { root.position = desiredPos; moving = false; cs = CardState.WAITING; dir = Vector2.zero; gridRef.CardEndMovement(); } else { root.position += dir * speed; } break; case CardState.BLOQUED: break; case CardState.DYING: //if(!b) Destroy(this.transform.parent.gameObject); break; } }