Пример #1
0
    public override void OnEpisodeBegin()
    {
        //	Debug.Log("Episode Begin...");
        //	Debug.Log("Initializing episode...");

        transform.localPosition        = moveTo = new Vector3(Random.Range(-8f, 8f), originalPosition.y, originalPosition.z);
        target.transform.localPosition = new Vector3(Random.Range(-8f, 8f), target.transform.localPosition.y, target.transform.localPosition.z);
        transform.localRotation        = Quaternion.identity;

        moveToDirection = MoveToDirection.Forward;
        moveInProgress  = true;
        moveTo          = new Vector3(transform.localPosition.x, transform.localPosition.y, transform.localPosition.z + stepAmount);

        doRotate           = false;
        isRotationComplete = false;
        waitToEndEpisode   = false;

        GameObject.Find("Robot spawner").GetComponent <RobotSpawner>().DestroyEpisodeRobots();
        GameObject.Find("Robot spawner").GetComponent <RobotSpawner>().Respawn();


        totalDistance    = Vector3.Distance(target.transform.localPosition, transform.localPosition);
        previousDistance = totalDistance;

        //	Debug.Log("Initalization Complete...");

        moveInProgress = false;
    }
Пример #2
0
    public override void OnActionReceived(float[] vectorAction)
    {
        if (moveInProgress)
        {
            return;
        }

        direction = Mathf.FloorToInt(vectorAction[0]);

        switch (direction)
        {
        case 0:     // idle
            moveTo          = transform.localPosition;
            moveToDirection = MoveToDirection.Idle;
            break;

        case 1:     // left
            moveTo          = new Vector3(transform.localPosition.x - stepAmount, transform.localPosition.y, transform.localPosition.z);
            moveToDirection = MoveToDirection.Left;
            moveInProgress  = true;
            break;

        case 2:     // right
            moveTo          = new Vector3(transform.localPosition.x + stepAmount, transform.localPosition.y, transform.localPosition.z);
            moveToDirection = MoveToDirection.Right;
            moveInProgress  = true;
            break;

        case 3:     // forward
            moveTo          = new Vector3(transform.localPosition.x, transform.localPosition.y, transform.localPosition.z + stepAmount);
            moveToDirection = MoveToDirection.Forward;
            moveInProgress  = true;
            break;
        }
    }
Пример #3
0
    public override void OnActionReceived(float[] vectorAction)
    {
        if (moveInProgress || waitToEndEpisode)
        {
            return;
        }
        direction = Mathf.FloorToInt(vectorAction[0]);

        switch (direction)
        {
        case 0:     // idle
            //		moveTo = new Vector3(transform.localPosition.x, transform.localPosition.y, transform.localPosition.z - stepAmount);
            moveToDirection = MoveToDirection.Idle;
            moveInProgress  = false;
            break;

        case 1:                 // left
            moveTo          = new Vector3(transform.localPosition.x - stepAmount, transform.localPosition.y, transform.localPosition.z);
            moveToDirection = MoveToDirection.Left;
            //		transform.Rotate(0f, -90f, 0f);
            doRotate           = true;
            isRotationComplete = false;
            moveInProgress     = true;
            rotationAngle      = new Vector3(0f, -90f, 0f);
            break;

        case 2:     // right
            moveTo          = new Vector3(transform.localPosition.x + stepAmount, transform.localPosition.y, transform.localPosition.z);
            moveToDirection = MoveToDirection.Right;
            //		transform.Rotate(0f, 90f, 0f);
            doRotate           = true;
            isRotationComplete = false;
            moveInProgress     = true;
            rotationAngle      = new Vector3(0f, 90f, 0f);
            break;

        case 3:     // forward
            moveTo          = new Vector3(transform.localPosition.x, transform.localPosition.y, transform.localPosition.z + stepAmount);
            moveToDirection = MoveToDirection.Forward;
            moveInProgress  = true;
            break;
        }
    }