ppo-Pyramids-Training / Project /Assets /ML-Agents /Examples /FoodCollector /Scripts /FoodCollectorArea.cs
| using UnityEngine; | |
| using Unity.MLAgentsExamples; | |
| public class FoodCollectorArea : Area | |
| { | |
| public GameObject food; | |
| public GameObject badFood; | |
| public int numFood; | |
| public int numBadFood; | |
| public bool respawnFood; | |
| public float range; | |
| void CreateFood(int num, GameObject type) | |
| { | |
| for (int i = 0; i < num; i++) | |
| { | |
| GameObject f = Instantiate(type, new Vector3(Random.Range(-range, range), 1f, | |
| Random.Range(-range, range)) + transform.position, | |
| Quaternion.Euler(new Vector3(0f, Random.Range(0f, 360f), 90f))); | |
| f.GetComponent<FoodLogic>().respawn = respawnFood; | |
| f.GetComponent<FoodLogic>().myArea = this; | |
| } | |
| } | |
| public void ResetFoodArea(GameObject[] agents) | |
| { | |
| foreach (GameObject agent in agents) | |
| { | |
| if (agent.transform.parent == gameObject.transform) | |
| { | |
| agent.transform.position = new Vector3(Random.Range(-range, range), 2f, | |
| Random.Range(-range, range)) | |
| + transform.position; | |
| agent.transform.rotation = Quaternion.Euler(new Vector3(0f, Random.Range(0, 360))); | |
| } | |
| } | |
| CreateFood(numFood, food); | |
| CreateFood(numBadFood, badFood); | |
| } | |
| public override void ResetArea() | |
| { | |
| } | |
| } | |