public void Start() { this.draw = true; this.navMesh = NavigationManager.Instance.NavMeshGraphs[0]; this.Character = new DynamicCharacter(this.gameObject); //initialize your pathfinding algorithm here! //use the best heuristic from Project 2 this.AStarPathFinding = new NodeArrayAStarPathFinding(this.navMesh, new EuclideanHeuristic()); //initialization of the GOB decision making //let's start by creating 4 main goals this.SurviveGoal = new Goal(SURVIVE_GOAL, 1.0f); this.GainLevelGoal = new Goal(GAIN_LEVEL_GOAL, 1.0f) { ChangeRate = 0.1f }; this.GetRichGoal = new Goal(GET_RICH_GOAL, 1.0f) { InsistenceValue = 5.0f, ChangeRate = 0.2f }; this.BeQuickGoal = new Goal(BE_QUICK_GOAL, 1.0f) { ChangeRate = 0.1f }; this.Goals = new List <Goal>(); this.Goals.Add(this.SurviveGoal); this.Goals.Add(this.BeQuickGoal); this.Goals.Add(this.GetRichGoal); this.Goals.Add(this.GainLevelGoal); //initialize the available actions //Uncomment commented actions after you implement them this.Actions = new List <Action>(); //this.Actions.Add(new ShieldOfFaith(this)); foreach (var chest in GameObject.FindGameObjectsWithTag("Chest")) { this.Actions.Add(new PickUpChest(this, chest)); } foreach (var potion in GameObject.FindGameObjectsWithTag("ManaPotion")) { //this.Actions.Add(new GetManaPotion(this, potion)); } foreach (var potion in GameObject.FindGameObjectsWithTag("HealthPotion")) { this.Actions.Add(new GetHealthPotion(this, potion)); } foreach (var enemy in GameObject.FindGameObjectsWithTag("Skeleton")) { this.Actions.Add(new SwordAttack(this, enemy)); this.Actions.Add(new DivineSmite(this, enemy)); } foreach (var enemy in GameObject.FindGameObjectsWithTag("Orc")) { this.Actions.Add(new SwordAttack(this, enemy)); } foreach (var enemy in GameObject.FindGameObjectsWithTag("Dragon")) { this.Actions.Add(new SwordAttack(this, enemy)); } var worldModel = new CurrentStateWorldModel(this.GameManager, this.Actions, this.Goals); this.GOAPDecisionMaking = new DepthLimitedGOAPDecisionMaking(worldModel, this.Actions, this.Goals); this.DiaryText.text = "My Diary \n I awoke. What a wonderful day to kill Monsters!\n"; }
public void Start() { this.draw = true; this.navMesh = NavigationManager.Instance.NavMeshGraphs[0]; this.Character = new DynamicCharacter(this.gameObject); var clusterGraph = Resources.Load <ClusterGraph>("ClusterGraph"); this.Initialize(NavigationManager.Instance.NavMeshGraphs[0], new NodeArrayAStarPathFinding(NavigationManager.Instance.NavMeshGraphs[0], new GatewayHeuristic(clusterGraph))); //initialization of the GOB decision making //let's start by creating 4 main goals this.SurviveGoal = new Goal(SURVIVE_GOAL, 2.0f); this.GainXPGoal = new Goal(GAIN_XP_GOAL, 1.0f) { ChangeRate = 0.1f }; this.GetRichGoal = new Goal(GET_RICH_GOAL, 1.0f) { InsistenceValue = 5.0f, ChangeRate = 0.2f }; this.BeQuickGoal = new Goal(BE_QUICK_GOAL, 1.0f) { ChangeRate = 0.1f }; this.Goals = new List <Goal>(); this.Goals.Add(this.SurviveGoal); this.Goals.Add(this.BeQuickGoal); this.Goals.Add(this.GetRichGoal); this.Goals.Add(this.GainXPGoal); //initialize the available actions this.Actions = new List <Action>(); foreach (var chest in GameObject.FindGameObjectsWithTag("Chest")) { this.Actions.Add(new PickUpChest(this, chest)); } foreach (var potion in GameObject.FindGameObjectsWithTag("ManaPotion")) { this.Actions.Add(new GetManaPotion(this, potion)); } foreach (var potion in GameObject.FindGameObjectsWithTag("HealthPotion")) { this.Actions.Add(new GetHealthPotion(this, potion)); } foreach (var enemy in GameObject.FindGameObjectsWithTag("Skeleton")) { this.Actions.Add(new SwordAttack(this, enemy)); this.Actions.Add(new Fireball(this, enemy)); } foreach (var enemy in GameObject.FindGameObjectsWithTag("Orc")) { this.Actions.Add(new SwordAttack(this, enemy)); this.Actions.Add(new Fireball(this, enemy)); } foreach (var enemy in GameObject.FindGameObjectsWithTag("Dragon")) { this.Actions.Add(new SwordAttack(this, enemy)); this.Actions.Add(new Fireball(this, enemy)); } var worldModel = new CurrentStateWorldModel(this.GameManager, this.Actions, this.Goals); this.GOAPDecisionMaking = new DepthLimitedGOAPDecisionMaking(worldModel, this.Actions, this.Goals); }