void PickUpSpecialItem(GameObject item) { item.transform.position = new Vector2(transform.position.x, transform.position.y + 1); item.transform.SetParent(this.transform); SpecialItems.Remove(item); currentState = HumanStates.Place; }
void Start() { currentState = HumanStates.Search; gm = GameObject.Find("GameManager").GetComponent<GameManager>(); rm = GameObject.Find("GameManager").GetComponent<RoomGenerator>(); rcm = GameObject.Find("GameManager").GetComponent<RoomChangeManager>(); SpecialItems = rm.AiTracker; ItemGoalPlacement = GameObject.FindGameObjectsWithTag("Heartagram").ToList(); }
void GoToPlaceItem(GameObject item) { transform.position = Vector3.MoveTowards(transform.position, ItemGoalPlacement[0].transform.position, 4f * Time.deltaTime); if (Vector2.Distance(transform.position, ItemGoalPlacement[0].transform.position) <= 0) { currentState = HumanStates.Search; ItemGoalPlacement[0].GetComponent<MissionObjective_ItemNode>().HasItem = true; item.transform.SetParent(null); ItemGoalPlacement.Remove(ItemGoalPlacement[0]); } }
GameObject FindClosestSpecialItem(List<GameObject> specItems) { GameObject nearestTarget = null; float closestDistance = Mathf.Infinity; Vector3 currentPosition = transform.position; foreach(GameObject potentialTarget in specItems) { Vector3 directionToTarget = potentialTarget.transform.position - currentPosition; float dSqrToTarget = directionToTarget.sqrMagnitude; if(dSqrToTarget < closestDistance) { closestDistance = dSqrToTarget; nearestTarget = potentialTarget; } if(directionToTarget == Vector3.zero) { itemToPickUp = nearestTarget; currentState = HumanStates.PickUp; } } return nearestTarget; }