Example #1
0
    public override void OnActionReceived(ActionBuffers actionBuffers)
    {
        //switch (vectorAction[0])
        //{
        //    case 1:
        //        Rotate(1);
        //        break;
        //    case 2:
        //        Rotate(-1);
        //        break;
        //    case 3:
        //        Rotate(0);
        //        break;
        //}

        //if (vectorAction[1] == 1)
        //{
        //    FireInput();
        //}

        //Set rewards
        if (tankManager.GetFriendlySuccessCount() > oldFriendlySuccessCount)
        {
            SetReward(0.3f);
            oldFriendlySuccessCount = tankManager.GetFriendlySuccessCount();
        }
        else if (tankManager.GetFriendlyKilledCount() > oldFriendlyKilled)
        {
            Debug.Log("killed f");
            SetReward(-0.5f);
            oldFriendlyKilled = tankManager.GetFriendlyKilledCount();
        }
        else if (tankManager.GetEnemySuccesscount() > oldEnemySuccessCount)
        {
            SetReward(-0.7f);
            oldEnemySuccessCount = tankManager.GetEnemySuccesscount();
        }


        if (tankManager.GetFriendlySuccessCount() >= tankManager.FriendlySaveTowin)
        {
            Debug.Log("Game Won");
            SetReward(1.0f);
            EndEpisode();
        }
        else if (tankManager.GetFriendlyKilledCount() >= tankManager.FriendlyKilledToLose)
        {
            Debug.Log("Game Lost");
            SetReward(-1.0f);
            EndEpisode();
        }
        else if (tankManager.GetEnemySuccesscount() >= tankManager.EnemyEnterToLose)
        {
            Debug.Log("Game lost");
            SetReward(-1.0f);
            EndEpisode();
        }


        MoveAgent(actionBuffers.DiscreteActions);
    }