private void TeleportToPoint() { int index = currentPoint.BoardModel.BoardNumber; TeleportModel teleportModel = teleporter.Teleports.FindTeleportByTrigger(index); Vector2 playerPosition = transform.position; Vector2 startPosition = boardManagerPosition + playerPosition; Vector2 nextPosition = boardManagerPosition + teleportModel.BoardPoint.finalPoint.BoardPosition; Vector3 vectorDirection = nextPosition - startPosition; vectorDirection.Normalize(); if (Vector2.Distance(transform.position, nextPosition) > stoppedDistance) { transform.position += vectorDirection * speed * Time.deltaTime; } else { currentPoint = teleportModel.BoardPoint.finalPoint; nextPoint = NextBoardPosition(); numberOfMove = 0; diceNumber = 0; turnType = TurnType.Wating; CallFinishMoveDelegate(); } }
public void CreateTeleportLines(TeleportModel teleport) { Vector3 boardManagerPosition = boardManager.transform.position; BoardView startBoard = boardManager.BoardViews.FindBoardViewByIndexBoard(teleport.TriggerIndex); BoardView finalBoard = boardManager.BoardViews.FindBoardViewByIndexBoard(teleport.TeleportIndex); teleport.SetBoardPoint(startBoard, finalBoard); Vector2 startPosition = boardManagerPosition + startBoard.RectTransform.localPosition; Vector2 finalPosition = boardManagerPosition + finalBoard.RectTransform.localPosition; CreateTeleportLines(startPosition, finalPosition, teleport.GetTeleportType); }
public void Teleport(TeleportModel m) { if (m.To == "local") { transform.position = m.ToPosition; } else { GameManager.SendMessage("ChangeScene", new ChangeSceneModel { SceneId = m.To, OnComplete = () => { if (m.ToPosition != null) { GameObject.Find("Player").transform.position = m.ToPosition; } } }); } }