private void TouchStart(Define.TouchEvent evt) { if (evt != Define.TouchEvent.Press) { return; } IsActive = false; StartTouch = Camera.main.ScreenToWorldPoint(Input.mousePosition); }
private void TouchDrag(Define.TouchEvent evt) { if (evt != Define.TouchEvent.Drag || _camera == null) { return; } _currMode = Define.CameraMode.Drag; Vector3 dir = StartTouch - Camera.main.ScreenToWorldPoint(Input.mousePosition); _camera.transform.position += dir; }
private void TouchZoom(Define.TouchEvent evt) { if (evt != Define.TouchEvent.Zoom || _camera == null) { return; } IsActive = true; Touch touchZero = Input.GetTouch(0); Touch touchOne = Input.GetTouch(1); Vector2 zeroPrevPos = touchZero.position - touchZero.deltaPosition; Vector2 onePrevPos = touchOne.position - touchOne.deltaPosition; float prevM = (zeroPrevPos - onePrevPos).magnitude; float m = (touchZero.position - touchOne.position).magnitude; float difference = m - prevM; Zoom(difference * 0.01f); }
private void OnTouch(Define.TouchEvent evt) { if (evt != Define.TouchEvent.End) { return; } if (!GameMng.Camera.IsActive && !EventSystem.current.IsPointerOverGameObject()) { // 입력이 들어왔슴으로 기존에 있던 Task는 모두 지워라. TemporaryStorage.Clear(); Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Tile curr = FindCurrTile(); Tile target = FindTargetTile(pos); if (target != null && curr != null && !(curr == target) && (target.Visible || target.Explored)) { TileType type = target.TILETYPE; if (target.TileTypeStack.Count > 0) { if (target.TILETYPE != TileType.Monster) { type = target.TileTypeStack.Pop(); } } if (IsThrow) { GameMng.Task.CurrentExecute(new TaskThrow(target, gameObject, _map, SelectedSlot)); IsThrow = false; SelectedSlot = null; return; } if (IsShoot) { Vector2Int start = new Vector2Int((int)transform.position.x, (int)transform.position.y); target = Helper.RayCastWithBresenham(start, target.Position, _map); if (target == FindCurrTile()) { UIMng.Instance.CallEvent(UIList.HUD, "TextBox", "당신은 스스로를 겨냥할 수 없다."); return; } GameMng.Task.CurrentExecute(new TaskShoot(target, gameObject, _map, SelectedSlot)); IsShoot = false; SelectedSlot = null; return; } if (type == TileType.Floor || type == TileType.FrontDoor || type == TileType.SideDoor) { Move(curr, target); } if (type == TileType.Monster) { Attack(curr, target); } if (type == TileType.Item) { Item(curr, target); } if (type == TileType.DownStairway || type == TileType.UpStairway) { Translate(curr, target); } } } }