IEnumerator SmoothMove(Defines.Position pos) { Vector3 targetPos = Managers.Board.BoardPosToWorldPos(pos) + new Vector2(0, 1); Vector3 dir = targetPos - transform.position; RotateCharacter(dir); while (dir.magnitude > 0.1f) { m_DamageText.transform.position = Camera.main.WorldToScreenPoint(m_anchorDamage.transform.position); dir = targetPos - transform.position; yield return(null); float moveDist = Mathf.Clamp(m_speed * Time.deltaTime, 0, dir.magnitude); transform.position += dir.normalized * moveDist; if (transform.tag == "Player") { Managers.Camera.UpdateCameraPos(Defines.CameraType.Main); } } SetPosition(pos); m_animator.SetInteger("State", (int)Defines.CharacterState.Idle); }
public Quest_MoveToGoal(QuestType type, Defines.Position pos) { m_questType = type; m_goalPos = pos; Init(); }
protected Defines.Position ChkPositionFromPlayer() { m_playerPos = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position; m_enemyPos = m_controller.Position; return(m_playerPos - m_enemyPos); }
protected float ChkDistanceFromPlayer() { m_playerPos = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position; m_enemyPos = m_controller.Position; return(Mathf.Abs(m_playerPos.posX - m_enemyPos.posX) + Mathf.Abs(m_playerPos.posY - m_enemyPos.posY)); }
public Transform SpawnObjectOnBoard(Defines.ObjectType type, string objectName, Defines.Position pos) { string objectPath = $"{m_defaultObjectPath[(int)type]}/{objectName}"; GameObject go = Managers.Resources.Instantiate(objectPath); go.GetComponent <InterfaceClass.IPosition>().SetPosition(pos); if (type == Defines.ObjectType.Enemy) { go.transform.parent = m_enemyHolder; } else if (type == Defines.ObjectType.Player) { go.transform.parent = GameManager.GameMgr.DontDestoryGameObject; m_player = go.transform; } else if (type == Defines.ObjectType.Object) { go.transform.parent = m_objectHolder; } Managers.Board.ChkAndAddObjOnBoard(pos, go.transform); return(go.transform); }
Defines.Position GenerateDirPosition(Defines.Direction dir) { Defines.Position returnPos = m_position; switch (dir) { case Defines.Direction.Left: break; case Defines.Direction.Right: returnPos.posX = -m_position.posX; returnPos.posY = m_position.posY; break; case Defines.Direction.Up: returnPos.posX = m_position.posY; returnPos.posY = -m_position.posX; break; case Defines.Direction.Down: returnPos.posX = m_position.posY; returnPos.posY = m_position.posX; break; } return(returnPos); }
public override void Random(QuestType type) { m_questType = type; m_goalPos = new Defines.Position(UnityEngine.Random.Range(0, Managers.Board.BoardWidth), UnityEngine.Random.Range(0, Managers.Board.BoardHeight)); Init(); Managers.Quest.AddQuest(type, this); }
// 보드 경계를 검사한다. public bool ChkBoundary(Defines.Position pos) { if (pos.posX < 0 || pos.posX >= m_boardWidth || pos.posY < 0 || pos.posY >= m_boardHeight) { Debug.Log($"The Object is out of bounds ({(int)pos.posX}, {(int)pos.posY})"); return(false); } return(true); }
// 보드 좌표를 통해 오브젝트를 가져온다. public Transform GetObjOnBoard(Defines.Position pos) { if (ChkBoundary(pos) == false) { return(null); } return(m_objectOnBoard[(int)pos.posX, (int)pos.posY]); }
// pos 를 향해 움직임. public virtual void CharacterMove(Defines.Position pos) { if (Managers.Board.ChkMoveObjOnBoard(transform, pos) == false) { return; } StartCoroutine(SmoothMove(pos)); }
// 보드 좌표에 오브젝트가 있는지 확인한다. public bool ChkObjOnBoard(Defines.Position pos) { if (m_objectOnBoard[(int)pos.posX, (int)pos.posY] != null) { Debug.Log($"The Object is existed ({(int)pos.posX}, {(int)pos.posY})"); return(false); } return(true); }
// 보드에서 오브젝트가 있는지 확인하고 제거한다. public bool ChkAndRemoveObjOnBoard(Defines.Position pos) { if (ChkBoundary(pos) == false) { return(false); } m_objectOnBoard[(int)pos.posX, (int)pos.posY] = null; return(true); }
public override void UsedWithMarkPoint(Defines.Position pos) { Transform enemy = Managers.Board.GetObjOnBoard(pos); if (enemy == null) { return; } Managers.Object.Player.GetComponent <Char_BaseCtr>().AttackOtherCharacter(enemy); }
public void InstantiateMarkPoint(Card_Base card, List <Defines.Position> pos, bool isCopy = true) { m_targetCard = card; m_playerPos = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position; for (int i = 0; i < pos.Count; i++) { GameObject go = GameObject.Instantiate(m_markPoint.gameObject, m_markPointHolder); go.GetComponent <SelectingMarkBehavior>().SetPosition(new Defines.Position(pos[i].posX, pos[i].posY)); m_listfMarkPoints.Add(go.transform); } }
protected Defines.Direction MovingDirection(Defines.Position gapPos) { if (Mathf.Abs(gapPos.posX) >= Mathf.Abs(gapPos.posY)) { return(gapPos.posX < 0 ? Defines.Direction.Left : Defines.Direction.Right); } else { return(gapPos.posY < 0 ? Defines.Direction.Down : Defines.Direction.Up); } }
public void SetPosition(Defines.Position pos) { m_position = pos; m_playerPos = Managers.Object.Player.GetComponent <Char_BaseCtr>().Position; for (int i = 0; i < (int)Defines.Direction.Count; i++) { Defines.Position _pos = GenerateDirPosition((Defines.Direction)i); m_positions[i] = new Defines.Position(m_playerPos.posX + _pos.posX, m_playerPos.posY + _pos.posY); } }
protected virtual void NewLoadObject() { Defines.Position pos = new Defines.Position(3, 3); Transform player = Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Player, "Player", pos).transform; DontDestroyOnLoad(player); Managers.Camera.SetTrackingTarget(player); Managers.Camera.UpdateCameraPos(Defines.CameraType.Main); Managers.Object.SpawnEnemy("Pig", new Defines.Position(2, 3)); Managers.Object.SpawnEnemy("PirateBoar", new Defines.Position(5, 3)); }
public bool ChkAndAddObjOnBoard(Defines.Position pos, Transform obj, bool overlap = false) { // 보드의 경계 검사, 해당 좌표에 오브젝트가 있는지 확인 if (ChkBoundary(pos) == false || ChkObjOnBoard(pos) == false) { return(false); } obj.position = m_tilesOnBoard[(int)pos.posX, (int)pos.posY].position + new Vector3(0, 1, 0); m_objectOnBoard[(int)pos.posX, (int)pos.posY] = obj; return(true); }
public void SetPosition(Defines.Direction dir) { m_position = m_positions[(int)dir]; if (Managers.Board.ChkBoundary(m_position) == false) { gameObject.SetActive(false); return; } gameObject.SetActive(true); Vector2 boardPos = Managers.Board.BoardPosToWorldPos(m_position); transform.position = boardPos + new Vector2(0, 1.25f); }
protected override void NewLoadObject() { Defines.Position pos = new Defines.Position(2, 2); Transform player = Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Player, "Player", pos).transform; DontDestroyOnLoad(player); Managers.Camera.SetTrackingTarget(player); Managers.Camera.UpdateCameraPos(Defines.CameraType.Main); Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Object, "OnlyDefenseMode/ProtectedItem", new Defines.Position(3, 3)); Managers.UI.ShowSceneUI <DefenseSceneUI>(sceneType); Managers.UI.ShowSceneUI <UI_MaximumBonus>(sceneType).gameObject.SetActive(false); }
IEnumerator FlyingBall(Defines.Position pos) { Vector3 targetPos = Managers.Board.BoardPosToWorldPos(pos) + new Vector2(0, 1); Vector3 dir = targetPos - transform.position; while (dir.magnitude > 0.1f) { dir = targetPos - transform.position; yield return(null); float moveDist = Mathf.Clamp(m_ballSpeed * Time.deltaTime, 0, dir.magnitude); transform.position += dir.normalized * moveDist; } }
public void LoadDataAndSpawnPlayer(int idx) { string loadString = File.ReadAllText("Assets/Resources/Data/PlayerData.json"); JObject loaddata = JObject.Parse(loadString); Char_PlayerStats playerStats = JsonConvert.DeserializeObject <Char_PlayerStats>(loaddata[$"PlayerData_{idx}"].ToString()); Char_CommonStats defaultStats = JsonConvert.DeserializeObject <Char_PlayerStats>(loaddata[$"DefaultStat_{idx}"].ToString()); Char_CommonStats additionalStats = JsonConvert.DeserializeObject <Char_PlayerStats>(loaddata[$"AdditionalStat_{idx}"].ToString()); Defines.Position pos = JsonConvert.DeserializeObject <Defines.Position>(loaddata[$"PlayerPos_{idx}"].ToString()); Transform player = Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Player, "Player", pos); player.GetComponent <Char_PlayerCtr>().SetPlayerData(playerStats, defaultStats, additionalStats); }
public Transform SpawnObjectOnBoard(Defines.ObjectType type, GameObject go, Defines.Position pos) { go.GetComponent <Char_BaseCtr>().SetPosition(pos); if (type == Defines.ObjectType.Enemy) { go.transform.parent = m_enemyHolder; } else if (type == Defines.ObjectType.Player) { m_player = go.transform; } Managers.Board.ChkAndAddObjOnBoard(pos, go.transform); return(go.transform); }
public override GameObject CreateEnemy(string enemyName, Defines.Position pos) { GameObject go; if (m_enemyGOs.TryGetValue(enemyName, out go) == false) { go = Managers.Resources.Load <GameObject>($"{m_enemyPath}/{enemyName}"); if (go == null) { Debug.Log($"Faild to Create Enemy : {enemyName}"); return(null); } m_enemyGOs.Add(enemyName, go); } return(GameObject.Instantiate(go));; }
public Transform[,] ConstructTiles(Board_Base board) { Defines.Position _startPos = new Defines.Position((-board.BoardWidth / 2) * m_gapBetweenTiles, (-board.BoardHeight / 2) * m_gapBetweenTiles); string _path = $"Prefabs/Tile/Tile"; Transform[,] _returnBoard = new Transform[board.BoardWidth, board.BoardHeight]; for (int i = 0; i < board.BoardWidth; i++) { for (int j = 0; j < board.BoardHeight; j++) { GameObject go = Managers.Resources.Instantiate(_path, m_terrainHolder); go.GetComponent <SpriteRenderer>().sprite = m_terrains[board.TileIndexes[i, j]]; go.transform.position = new Vector2(_startPos.posX + (i * m_gapBetweenTiles), _startPos.posY + (j * m_gapBetweenTiles)); _returnBoard[i, j] = go.transform; } } return(_returnBoard); }
public void LoadDataAndSpawnEnemy(int idx) { m_curMapIdx = Managers.World.CurMapIdx; string loadString = File.ReadAllText("Assets/Resources/Data/EnemyData.json"); JObject loaddata = JObject.Parse(loadString); JArray enemyStatsDatas = (JArray)loaddata[$"EnemyData_{idx}"][m_curMapIdx]; JArray enemyPosDatas = (JArray)loaddata[$"EnemyPos_{idx}"][m_curMapIdx]; for (int i = 0; i < enemyStatsDatas.Count; i++) { Char_EnemyStats stats = JsonConvert.DeserializeObject <Char_EnemyStats>(enemyStatsDatas[i].ToString()); Defines.Position pos = JsonConvert.DeserializeObject <Defines.Position>(enemyPosDatas[i].ToString()); Transform enemy = Managers.Object.SpawnEnemy(stats.Name, pos); enemy.GetComponent <Char_EnemyCtr>().m_enemyStats = stats; } }
// 게이지가 가득 차면 주변 적을 밀어낸다. void ExplodingAroundProtected() { Defines.Position targetPos; m_explodingEffect.SetActive(true); for (int i = 0; i < m_knockbackPosX.Length; i++) { targetPos = new Defines.Position(m_knockbackPosX[i], m_knockbackPosY[i]); Transform character = Managers.Board.GetObjOnBoard(m_info.Position + targetPos); if (character == null) { continue; } targetPos += m_info.Position + targetPos; character.GetComponent <Char_BaseCtr>().CharacterMove(targetPos); Managers.Board.ChkMoveObjOnBoard(character, targetPos); } }
public Transform SpawnEnemy(string enemyName, Defines.Position pos) { if (Managers.Board.ChkObjOnBoard(pos) == false) { Debug.Log($"Faild to Create Enemy : {enemyName}"); return(null); } m_enemyFactory = new Factory_Pig(); GameObject go = m_enemyFactory.CreateEnemy(enemyName, pos); if (go == null) { return(null); } Managers.Object.SpawnObjectOnBoard(Defines.ObjectType.Enemy, go, pos); return(go.transform); }
// 보드 상의 위치를 바꿔준다. public bool ChkMoveObjOnBoard(Transform charater, Defines.Position pos) { if (charater == null || ChkBoundary(pos) == false) { return(false); } if (m_objectOnBoard[(int)pos.posX, (int)pos.posY] != null) { Debug.Log("움직일 수 없습니다."); return(false); } Defines.Position curPos = charater.GetComponent <Char_BaseCtr>().Position; m_objectOnBoard[(int)pos.posX, (int)pos.posY] = charater; m_objectOnBoard[(int)curPos.posX, (int)curPos.posY] = null; return(true); }
public void SetPosition(Defines.Position pos) { m_position = pos; transform.position = Managers.Board.BoardPosToWorldPos(m_position) + new Vector2(0, 1); }