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); }
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()); }