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);
        }
    void Awake()
    {
        initalizeNavMeshAgent();
        initalizeTarget();
        m_selfAgent     = this.GetComponent <FlyingAgent>();
        m_behaviorState = new DroneCombatStage(m_selfAgent, m_navMeshAgent, m_enemy);

        tempFloat = Random.value * 10;
    }
Esempio n. 3
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);
        }
        public void agent_creation()
        {
            var initialPosition = new Vector3(0, 0, 0);
            var moveSpeed       = 1f;

            var agent = FlyingAgent.Create(position: initialPosition, target: initialPosition, speed: moveSpeed);

            Assert.AreEqual(initialPosition, agent.position);
            Assert.AreEqual(moveSpeed, agent.speed);
        }
        public void agent_step()
        {
            var initialPosition = new Vector3(0, 0, 0);
            var moveSpeed       = 1f;
            var agent           = FlyingAgent.Create(position: initialPosition, target: initialPosition, speed: moveSpeed);

            var result = FlyingAgent.Update(agent, initialPosition + Vector3.up, velocity: Vector3.zero);

            Assert.AreEqual(new Vector3(0, 1, 0), result.position);
        }
        private void Initialize()
        {
            step = 0;
            stepsInsideTarget = 0;
            levelParameters   = LevelParameters.Create(100, 30f, 1f);

            var initialPosition = spawnPosition.localPosition;
            var targetPosition  = target.localPosition;

            agent = FlyingAgent.Create(initialPosition, target: targetPosition, speed: moveSpeed);
            area  = FlyingArea.Create(agent, targetPosition, doneReward: 2f, failReward: -2f);
            ResetUnityEntities(initialPosition, targetPosition);
        }
        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);
        }