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; }
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; } }
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; } }