public override void CollectObservations(VectorSensor sensor) { obsDisplayText = ""; LogVectorObs("position", planet.transform.rotation * this.transform.localPosition, new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Planet angular velocity", planet.angularVelocity, new Vector3(-3, -3, -3), new Vector3(3, 3, 3), sensor); LogVectorObs("Self Tangential Velocity", planet.GetPointVelocity(this.transform.position), new Vector3(-3, -3, -3), new Vector3(3, 3, 3), sensor); LogVectorObs("lightning target position", new Vector3(0, 0, 0), new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Can Consume", canConsume, sensor); LogVectorObs("Consuming", consuming, sensor); LogVectorObs("Grounded", false, sensor); LogVectorObs("Sitting", false, sensor); LogVectorObs("Can Push", false, sensor); LogVectorObs("Pushing", false, sensor); if (canConsume) { LogVectorObs("Consume Timer", 1, sensor); } else { LogVectorObs("Consume Timer", (Time.fixedTime - consumeTime) / 10, sensor); } int agentnum = 0; pushTarget = null; foreach (var agent in agents) { if (Vector3.Distance(agent.transform.position, this.transform.position) < 2f) { pushTarget = agent.GetComponent <Conscientious>(); } LogVectorObs("position", planet.transform.rotation * agent.transform.localPosition, new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Other Agent's Tangential Velocity", planet.GetPointVelocity(agent.transform.position), new Vector3(-3, -3, -3), new Vector3(3, 3, 3), sensor); agentnum++; } for (int i = agentnum; i < 5; i++) { LogVectorObs("position", new Vector3(0, 0, 0), new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Other Agent's Tangential Velocity", new Vector3(0, 0, 0), new Vector3(-3, -3, -3), new Vector3(3, 3, 3), sensor); } int weightNum = 0; foreach (var weight in weights) { LogVectorObs("Weight position", planet.transform.rotation * weight.transform.localPosition, new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Weight Tangential Velocity", planet.GetPointVelocity(weight.transform.position), new Vector3(-3, -3, -3), new Vector3(3, 3, 3), sensor); foreach (var consumePoint in weight.consumePoints) { //LogVectorObs("Consume Point position", planet.transform.rotation * consumePoint.transform.localPosition, new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Can Consume at Point", consumePoint.CanConsume, sensor); } weightNum++; } for (int i = weightNum; i < 5; i++) { LogVectorObs("Weight position", new Vector3(0, 0, 0), new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Weight Tangential Velocity", new Vector3(0, 0, 0), new Vector3(-3, -3, -3), new Vector3(3, 3, 3), sensor); for (int j = 0; j < 3; i++) { //LogVectorObs("Consume Point position", new Vector3(0, 0, 0), new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); LogVectorObs("Can Consume at Point", true, sensor); } } if (priorConsumePoint) { LogVectorObs("Prior Consume Point position", planet.transform.rotation * priorConsumePoint.transform.localPosition, new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); } else { LogVectorObs("Consume Point position", new Vector3(0, 0, 0), new Vector3(-0.5f, 0, -0.5f), new Vector3(0.5f, 0.6f, 0.5f), sensor); } obsSize = sensor.GetObservationShape().Length; }