コード例 #1
0
        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);
        }
コード例 #2
0
        public void inside_area()
        {
            var target = new Vector3(0, 3, 0);
            var agent  = FlyingAgent.Create(position: new Vector3(0, 2.999f, 0));
            var area   = FlyingArea.Create(agent, target);

            var result = FlyingArea.IsInsideArea(area);

            Assert.IsTrue(result);
        }