Ejemplo n.º 1
0
        public void ShouldWanderWhenPlayerIsFarAway(
            float wanderingDistance,
            float minDistanceForChasePlayer,
            float playerStartPosition
            )
        {
            var player = new GameObject("player");

            player.transform.position = new Vector3(playerStartPosition, 0, 0);

            var aiBody = new GameObject("AI");

            aiBody.transform.position = new Vector3(0, 0, 0);

            var brainSettings = new SimpleBrain.Settings()
            {
                MinDistanceForChasePlayer = minDistanceForChasePlayer,
                WanderingDistance         = wanderingDistance,
                MinAttackDistance         = 1f
            };
            var simpleBrain = new SimpleBrain(brainSettings, aiBody.transform);

            simpleBrain.Enabled();

            simpleBrain.SetPlayer(player);

            simpleBrain.Update();

            Assert.IsTrue(simpleBrain.IsWandering);
            AssertHelper.Between(
                -wanderingDistance, wanderingDistance, simpleBrain.TargetPosition.Get().x);
            AssertHelper.Between(
                -wanderingDistance, wanderingDistance, simpleBrain.TargetPosition.Get().z);
        }
Ejemplo n.º 2
0
        public IEnumerator ShouldWaitXTimeToReevaluateWaderingRoute()
        {
            var aiBody = new GameObject("AI");

            aiBody.transform.position = new Vector3(0, 0, 0);

            var brainSettings = new SimpleBrain.Settings()
            {
                MinDistanceForChasePlayer = 10f,
                WanderingReevaluateTime   = .5f,
                WanderingDistance         = 2f,
                MinAttackDistance         = 1f
            };
            var simpleBrain = new SimpleBrain(brainSettings, aiBody.transform);

            simpleBrain.Enabled();
            simpleBrain.Update();

            var firstTargetPostition = simpleBrain.TargetPosition.Get();

            Assert.IsTrue(simpleBrain.IsWandering);
            AssertHelper.Between(-2f, 2f, firstTargetPostition.x);
            AssertHelper.Between(-2f, 2f, firstTargetPostition.z);

            yield return(new WaitForSeconds(0.2f));

            simpleBrain.Update();
            Assert.IsTrue(simpleBrain.IsWandering);
            AssertHelper.AreEqual(firstTargetPostition, simpleBrain.TargetPosition.Get());

            yield return(new WaitForSeconds(0.4f));

            simpleBrain.Update();
            Assert.IsTrue(simpleBrain.IsWandering);
            AssertHelper.AreNotEqual(firstTargetPostition, simpleBrain.TargetPosition.Get());
        }