Fixed nan exception

This commit is contained in:
2022-05-18 01:37:06 +07:00
parent 4132787ef8
commit 7db8dbcfcf
8 changed files with 336 additions and 15 deletions

View File

@ -44,14 +44,18 @@ public class MovementController : MonoBehaviour
private void Update()
{
var thisPoint = _idNavPointDict[PointStartID];
if (ReachedDestination())
{
_myNpc.ChangePointState(_idNavPointDict[PointStartID].navType == NavPointType.Cover
_myNpc.ChangePointState(thisPoint.navType == NavPointType.Cover
? NpcEnumState.InCover
: NpcEnumState.InDirectPoint);
thisPoint.isOcuppied = true;
}
else
{
thisPoint.isOcuppied = false;
_idNavPointDict[PointEndID].isOcuppied = false;
_myNpc.ChangeBodyState(NpcBodyState.Standing);
_myNpc.ChangePointState(NpcEnumState.InRunning);
}
@ -78,7 +82,7 @@ public class MovementController : MonoBehaviour
{
return MapManager.Instance.NavPoints
.Where(point =>
(transform.position - point.Position).magnitude < _settings.MovementDistance)
(transform.position - point.Position).magnitude < _settings.MovementDistance && point.isOcuppied == false)
.ToList();
}

View File

@ -132,9 +132,7 @@ public class NPC : Agent, ICharacter
//state sensors
sensor.AddObservation((int)NpcState.State);
sensor.AddObservation((int)NpcBodyState.State);
sensor.AddObservation(GameManager.IsEnemyNearby(gameObject.transform.position, GetCharacter.Team));
//sensor.AddObservation(_navPointIdDict[_moveController.PointStartID].DeathAttr);
//sensor.AddObservation(_navPointIdDict[_moveController.PointEndID].DeathAttr);
sensor.AddObservation(GameManager.IsEnemyNearby(gameObject.transform.position, GetCharacter.Team));
sensor.AddObservation(_moveController.FlagDistance);
//point sensors
@ -142,13 +140,9 @@ public class NPC : Agent, ICharacter
{
var position = transform.position;
_bufferSensor.AppendObservation(new float[] {
point.DeathAttr,
(int)point.navType,
//4 flagEnemyDistance
GameManager.IsCloserToFlagFromNextNavPoint(point, position).ToInt(),
//5 EnemyVsNavPointDistance
GameManager.IsCloserToEnemyThanToNextNavPoint(point, position, GetCharacter.Team.GetOppositeTeam()).ToInt(),
//6 Have been seen by enemy in this point
GameManager.IsHaveSeenByEnemy(GetCharacter.Team.GetOppositeTeam(),
point.Position).ToInt()
});

View File

@ -56,6 +56,7 @@ public class FlagZone : MonoBehaviour
}
else if (occupAttackers > 0)
{
print("Atackers ocuppy flag");
TimeStayAttackers += Time.deltaTime;
GameManager._attackersTeam.AddGroupReward(Time.deltaTime* 0.1f);
GameManager._defendersTeam.AddGroupReward(-Time.deltaTime* 0.1f);
@ -67,6 +68,8 @@ public class FlagZone : MonoBehaviour
}
else if (occupDefenders > 0)
{
print("Defenders ocuppy flag");
GameManager._defendersTeam.AddGroupReward(+Time.deltaTime* 0.1f);
TimeStayDefenders += Time.deltaTime;
if (TimeStayDefenders > timeForWin)
{

View File

@ -15,6 +15,7 @@ public class NavPoint : MonoBehaviour
public float FlagDistance { get; private set; }
[SerializeField] public NavPointType navType;
[HideInInspector] public bool isOcuppied;
[HideInInspector] public int PointId = 0;
[HideInInspector] public float DeathAttr = 0;