public void Step(int maxSteps) { step += 1; var newPosition = unityAgent.transform.localPosition; var newRotation = unityAgent.body.rotation.eulerAngles; var newVelocity = unityAgent.body.velocity; var newTargetPosition = target.localPosition; var isInsideArea = FlyingArea.IsInsideArea(area); agent = FlyingAgent.Update(agent, newPosition, newTargetPosition, newRotation, velocity: newVelocity, speed: moveSpeed); area = FlyingArea.Update(area, agent, newTargetPosition, isInsideArea); if (!isInsideArea) { AgentOutsideArea(maxSteps); } if (isInsideArea) { AgentInsideArea(maxSteps); } if (AgentOutOfBounds()) { AgentFail(); } if (step > maxSteps) { TimeUp(); } AgentStep(maxSteps); }
private void Reset(bool changeTargetPosition = false) { step = 0; stepsInsideTarget = 0; var initialPosition = spawnPosition.localPosition; var targetLocalPosition = target.localPosition; var targetPosition = changeTargetPosition ? GenerateNewTargetPosition(initialPosition) : targetLocalPosition; agent = FlyingAgent.Update(agent, initialPosition, targetPosition); area = FlyingArea.Update(area, agent, targetPosition); ResetUnityEntities(initialPosition, targetPosition); }