修改面向方位Observation,删除TargetStates中的归属状态

修改对应上述Readme文件
This commit is contained in:
2023-12-31 09:46:27 +09:00
parent 142c0e44b5
commit 481794dcc3
3 changed files with 18 additions and 17 deletions
@@ -37,7 +37,7 @@ public class MLAgentsCustomController : Agent
private float[] rayDisResult;
private float[] targetStates;
private float remainTime;
private float inAreaState;
private float inFireBaseState;
private int endTypeInt;
@@ -92,22 +92,24 @@ public class MLAgentsCustomController : Agent
myObserve[1] = transform.localPosition.y / raySensors.viewDistance;
myObserve[2] = transform.localPosition.z / raySensors.viewDistance;
myObserve[3] = transform.eulerAngles.y / 360f;**/
float angleInRadians = transform.eulerAngles.y * Mathf.Deg2Rad;
myObserve[0] = transform.localPosition.x;
myObserve[1] = transform.localPosition.y;
myObserve[2] = transform.localPosition.z;
myObserve[3] = transform.eulerAngles.y / 36f;
myObserve[3] = MathF.Sin(angleInRadians);
myObserve[4] = MathF.Cos(angleInRadians);
rayTagResult = raySensors.rayTagResult;// 探测用RayTag类型结果 float[](raySensorNum,1)
rayTagResultOnehot = raySensors.rayTagResultOneHot; // 探测用RayTagonehot结果 List<int>[](raySensorNum*Tags,1)
rayDisResult = raySensors.rayDisResult; // 探测用RayDis距离结果 float[](raySensorNum,1)
targetStates = targetController.targetState; // (6) targettype, target x,y,z, firebasesAreaDiameter
remainTime = targetController.leftTime;
inAreaState = targetController.GetInAreaState();
inFireBaseState = targetController.GetInAreaState();
agentController.UpdateGunState();
//float[] focusEnemyObserve = RaySensors.focusEnemyInfo;// 最近的Enemy情报 float[](3,1) MinEnemyIndex,x,z
//sensor.AddObservation(allEnemyNum); // 敌人数量 int
sensor.AddObservation(targetStates);// (6) targettype, target x,y,z, firebasesAreaDiameter
sensor.AddObservation(inAreaState); // (1)
sensor.AddObservation(targetStates);// (5) targettype, target x,y,z, firebasesAreaDiameter
sensor.AddObservation(inFireBaseState); // (1)
sensor.AddObservation(remainTime); // (1)
sensor.AddObservation(agentController.gunReadyToggle); // (1) save gun is ready?
sensor.AddObservation(myObserve); // (4)自机位置xyz+朝向 float[](4,1)
@@ -120,7 +122,7 @@ public class MLAgentsCustomController : Agent
sensor.AddObservation(rayTagResult);
}
sensor.AddObservation(rayDisResult); // 探测用RayDis距离结果 float[](raySensorNum,1)
envUIController.UpdateStateText(targetStates, inAreaState, remainTime, agentController.gunReadyToggle, myObserve, rayTagResultOnehot, rayDisResult);
envUIController.UpdateStateText(targetStates, inFireBaseState, remainTime, agentController.gunReadyToggle, myObserve, rayTagResultOnehot, rayDisResult);
/*foreach(float aaa in rayDisResult)
{
Debug.Log(aaa);
+1 -2
View File
@@ -38,7 +38,7 @@ public class TargetController : MonoBehaviour
[System.NonSerialized] public Targets targetType;
[System.NonSerialized] public int gotoLevelNum;
[System.NonSerialized] public int attackLevelNum;
public float[] targetState = new float[6];
public float[] targetState = new float[5];
public enum EndType
{ Win, Lose, Running, Num };
@@ -348,7 +348,6 @@ public class TargetController : MonoBehaviour
targetState[2] = this.targetPosition.y;
targetState[3] = this.targetPosition.z;
targetState[4] = sceneBlockCon.nowBlock.firebasesAreaDiameter;
targetState[5] = sceneBlockCon.nowBlock.belongRatio;
}
}