Exemplo n.º 1
0
 public void SetVisual(ShipVisual visual)
 {
     if (visual != null)
     {
         _visual = visual;
         _visual.SetData(this);
     }
 }
Exemplo n.º 2
0
 public void ClearVisual()
 {
     if (_visual != null)
     {
         GameObject.Destroy(_visual.gameObject);
         _visual = null;
     }
 }
    public void HandleDrag(DragStatus status, Vector3 position, Vector3 last)
    {
        if (status == DragStatus.Begin)
        {
            Ray ray = _mainCamera.ScreenPointToRay(position);

            var hit = Physics2D.Raycast(ray.origin, ray.direction, 10000);

            if (hit.transform)
            {
                var shipVisual = hit.transform.GetComponent <ShipVisual>();
                if (shipVisual)
                {
                    _dragShipVisual           = shipVisual;
                    _dragOriginalPosition     = hit.point;
                    _dragOriginalShipPosition = shipVisual.transform.position;
                    _dragOffset = new Vector3(hit.point.x, hit.point.y, hit.transform.position.z) - hit.transform.position;
                }
            }
        }
        else if (status == DragStatus.Moving)
        {
            if (_dragShipVisual != null)
            {
                Ray ray = _mainCamera.ScreenPointToRay(position);

                Vector3 newPos = new Vector3(ray.origin.x, ray.origin.y, _dragOriginalPosition.z);
                _dragShipVisual.transform.position = _dragOriginalShipPosition + (newPos - _dragOriginalPosition);
            }
        }
        else if (status == DragStatus.End)
        {
            if (_dragShipVisual != null)
            {
                MoveShip(_dragShipVisual.Data, _dragOriginalShipPosition, _dragShipVisual.transform.position);
                _dragShipVisual = null;
            }
        }
    }