您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
66 行
1.6 KiB
66 行
1.6 KiB
using UnityEngine;
|
|
using MLAgentsExamples;
|
|
|
|
public class CubeWarArea : Area
|
|
{
|
|
[HideInInspector]
|
|
public SmallCubeAgent[] smallAgents;
|
|
[HideInInspector]
|
|
public LargeCubeAgent[] largeAgents;
|
|
public float range;
|
|
|
|
|
|
void Start()
|
|
{
|
|
range = 1.0f;
|
|
smallAgents = GetComponentsInChildren<SmallCubeAgent>();
|
|
largeAgents = GetComponentsInChildren<LargeCubeAgent>();
|
|
}
|
|
|
|
public void AgentDied()
|
|
{
|
|
bool smallAlive = false;
|
|
foreach (var smallAgent in smallAgents)
|
|
{
|
|
if (!smallAgent.IsDead())
|
|
{
|
|
smallAlive = true;
|
|
}
|
|
}
|
|
bool largeAlive = false;
|
|
foreach (var largeAgent in largeAgents)
|
|
{
|
|
if (!largeAgent.IsDead())
|
|
{
|
|
largeAlive = true;
|
|
}
|
|
}
|
|
if (!smallAlive)
|
|
{
|
|
foreach (var smallAgent in smallAgents)
|
|
{
|
|
smallAgent.SetReward(-1.0f);
|
|
smallAgent.EndEpisode();
|
|
}
|
|
foreach (var largeAgent in largeAgents)
|
|
{
|
|
largeAgent.SetReward(1.0f);
|
|
largeAgent.EndEpisode();
|
|
}
|
|
|
|
}
|
|
else if (!largeAlive)
|
|
{
|
|
foreach (var smallAgent in smallAgents)
|
|
{
|
|
smallAgent.SetReward(1.0f);
|
|
smallAgent.EndEpisode();
|
|
}
|
|
foreach (var largeAgent in largeAgents)
|
|
{
|
|
largeAgent.SetReward(-1.0f);
|
|
largeAgent.EndEpisode();
|
|
}
|
|
}
|
|
}
|
|
}
|