Simulation Script
Simulation Script
Step-by-Step Guide
Explanation:
• These variables define key parameters for the simulation (e.g., population sizes, grass
growth rate, and speed ranges for animals).
• Lists are used to store data for analysis or visualization.
2. Start() Method
This method initializes the simulation by spawning the starting populations of foxes, rabbits, and
grass.
csharp
Copy code
lineChart.ClearData(); // Clear any previous data from the chart.
csharp
Copy code
Rabbit = GameObject.Find("Rabbit");
Fox = GameObject.Find("Fox");
Grass = GameObject.Find("Grass");
Purpose:
csharp
Copy code
for (int i = 0; i < start_fox; i++) {
Instantiate(Fox, new Vector3(Random.Range(-50f, 50f), 1, Random.Range(-
50f, 50f)), Quaternion.Euler(0, Random.Range(0f, 360f), 0));
float speed = Random.Range(fox_min_speed, fox_max_speed); // Randomize
speed.
Fox.GetComponent<Fox>().speed = speed; // Assign speed.
Fox.GetComponent<Fox>().energy = Random.Range(0f, 100f); // Assign random
energy.
}
Explanation:
• Spawns start_fox foxes at random positions within a 100x100 area.
• Each fox is given a random speed and energy level within the defined ranges.
csharp
Copy code
for (int i = 0; i < start_rabbit; i++) {
Instantiate(Rabbit, new Vector3(Random.Range(-50f, 50f), 1,
Random.Range(-50f, 50f)), Quaternion.Euler(0, Random.Range(0f, 360f), 0));
float speed = Random.Range(rabbit_min_speed, rabbit_max_speed); //
Randomize speed.
Rabbit.GetComponent<Rabbit>().speed = speed; // Assign
speed.
Rabbit.GetComponent<Rabbit>().energy = Random.Range(0f, 100f); // Assign
random energy.
}
Explanation:
csharp
Copy code
for (int i = 0; i < 20; i++) {
Instantiate(Grass, new Vector3(Random.Range(-50f, 50f), 1, Random.Range(-
50f, 50f)), Quaternion.identity);
}
Explanation:
3. Update() Method
This method handles grass spawning, data collection, and visualization during the simulation.
Explanation:
csharp
Copy code
time += Time.deltaTime; // Increment the timer.
Purpose:
csharp
Copy code
GameObject[] foxes_objects = GameObject.FindGameObjectsWithTag("Fox");
GameObject[] rabbits_objects = GameObject.FindGameObjectsWithTag("Rabbit");
Explanation:
float rabbit_current_speed = 0;
foreach (GameObject rabbit in rabbits_objects) {
rabbit_current_speed += rabbit.GetComponent<Rabbit>().speed; // Sum up
rabbit speeds.
}
rabbit_current_speed /= rabbits_objects.Length; // Calculate average speed.
csharp
Copy code
foxes.Add(foxes_objects.Length); // Store fox count.
rabbits.Add(rabbits_objects.Length); // Store rabbit count.
fox_speed.Add(fox_current_speed); // Store average fox speed.
rabbit_speed.Add(rabbit_current_speed); // Store average rabbit speed.
csharp
Copy code
lineChart.AddData(0, Time.time, foxnumber); // Update fox population
data.
lineChart.AddData(1, Time.time, rabbitnumber); // Update rabbit population
data.
Explanation:
• Plots the populations of foxes and rabbits on a line chart for real-time visualization.
Key Concepts