void Start() { // Pet Manager m_PetsManager = GetComponent <PetsManager>(); // Player m_Player = GameObject.FindGameObjectWithTag("Player").GetComponent <Player2D_Manager>().gameObject; m_PlayerStats = GameObject.FindGameObjectWithTag("Player").GetComponent <Player2D_StatsHolder>(); m_PetsManager.SetPlayer(m_Player); m_PetsManager.SetPlayerStats(m_PlayerStats); // Pet Variables from Pets Manager m_PetsManager.GetPetDestination().Set(0, 0, 0); m_PetsManager.SetPetDestination(m_PetsManager.GetPetDestination()); m_PetsManager.SetDistanceApart(0f); m_PetsManager.SetGuardRange(0f); m_PetsManager.SetFollowRange(0f); m_PetsManager.SetHealRange(0f); // StateMachine m_StateMachine = new StateMachine(); m_PetsManager.SetStateMachine(m_StateMachine); m_PetsManager.GetStateMachine().AddState(new StateDeerGuard("StateDeerGuard", gameObject)); m_PetsManager.GetStateMachine().AddState(new StateDeerFollow("StateDeerFollow", gameObject)); m_PetsManager.GetStateMachine().AddState(new StateDeerTeleport("StateDeerTeleport", gameObject)); m_PetsManager.GetStateMachine().AddState(new StateDeerHeal("StateDeerHeal", gameObject)); m_PetsManager.GetStateMachine().SetNextState("StateDeerGuard"); m_PetsManager.EXPReward = m_PetsManager.EXPRewardScaling * m_PetsManager.Level; m_PetsManager.Init(); }
public void UpdateState() { // Safety Checks // // If Follow Range is still 0, set it to 5. if (m_PetsManager.GetFollowRange() == 0f) { m_PetsManager.SetFollowRange(5f); } // Get Distance Apart between Player and Pet // m_PetsManager.SetDistanceApart((m_PetsManager.GetPlayer().GetComponent <Transform>().position - m_go.GetComponent <Transform>().position).magnitude); if (m_PetsManager.GetPlayer() != null) { // Change to FOLLOW when Player has Teleported. m_go.GetComponent <Transform>().position = m_PetsManager.GetPlayer().GetComponent <Transform>().position; m_fHasTeleport = true; if (m_fHasTeleport) { m_fHasTeleport = false; m_PetsManager.GetStateMachine().SetNextState("StateDeerFollow"); } } else { m_Player = GameObject.FindGameObjectWithTag("Player"); m_PetsManager.SetPlayer(m_Player); } }
public void UpdateState() { // Get Distance Apart between Player and Pet // m_PetsManager.SetDistanceApart((m_PetsManager.GetPlayer().GetComponent <Transform>().position - m_go.GetComponent <Transform>().position).magnitude); if (m_PetsManager.GetPlayer() != null) { // Pet will walk to Player m_go.GetComponent <Transform>().position = Vector2.MoveTowards(m_go.GetComponent <Transform>().position, m_PetsManager.GetPlayer().GetComponent <Transform>().position, Time.deltaTime * (m_PetsManager.MoveSpeed * 0.4f)); if (m_PetsManager.GetDistanceApart() <= m_PetsManager.GetHealRange()) { m_bHasHeal = false; } if (!m_bHasHeal) { // Count Down m_fHealTimer -= Time.deltaTime; if (m_fHealTimer <= 0f) { m_fHealTimer = 5f; // Heal Player m_bHasHeal = true; } } // Change State to GUARD when it has Healed Finish. if (m_bHasHeal) { // Heal Player if (m_PetsManager.GetPlayerStats().Health != m_PetsManager.GetPlayerStats().MaxHealth) { // Increase Player HP m_PetsManager.GetPlayerStats().Health += m_fAddPlayerHP; } m_bHasHeal = false; m_PetsManager.GetStateMachine().SetNextState("StateDeerGuard"); } } else { m_Player = GameObject.FindGameObjectWithTag("Player"); m_PetsManager.SetPlayer(m_Player); } }
public void UpdateState() { // Safety Checks // // If Guard Range is still 0, set it to 2. if (m_PetsManager.GetGuardRange() == 0f) { m_PetsManager.SetGuardRange(2f); } // If Follow Range is still 0, set it to 5. if (m_PetsManager.GetFollowRange() == 0f) { m_PetsManager.SetFollowRange(5f); } // Get Distance Apart between Player and Pet // m_PetsManager.SetDistanceApart((m_PetsManager.GetPlayer().GetComponent <Transform>().position - m_go.GetComponent <Transform>().position).magnitude); // States if (m_PetsManager.GetPlayer() != null) { // Pet will walk to Player m_go.GetComponent <Transform>().position = Vector2.MoveTowards(m_go.GetComponent <Transform>().position, m_PetsManager.GetPlayer().GetComponent <Transform>().position, Time.deltaTime * (m_PetsManager.MoveSpeed * 0.4f)); // Change to GUARD when Player is out of range. if (m_PetsManager.GetDistanceApart() < m_PetsManager.GetGuardRange()) { m_PetsManager.GetStateMachine().SetNextState("StateDeerGuard"); } // Change to TELEPORT when Player is out of FOLLOW range. else if (m_PetsManager.GetDistanceApart() >= m_PetsManager.GetFollowRange()) { m_PetsManager.GetStateMachine().SetNextState("StateDeerTeleport"); } } else { m_Player = GameObject.FindGameObjectWithTag("Player"); m_PetsManager.SetPlayer(m_Player); } }