private void CreateStates() { sm = new StateMachine(); var findFlag = new PursueFlag(navMeshAgent, !greenTeam); var returnHome = new ReturnHome(navMeshAgent, greenTeam); //var aggro = new Aggro(movement); // sm.AddTransition(aggro, findFlag, EnemyIsWithinRange()); // sm.AddTransition(aggro, findFlag, EnemyIsNotWithinRange()); sm.AddTransition(findFlag, returnHome, HoldingFlag()); // sm.AddTransition(returnHome, findFlag, !isHoldingFlag); sm.SetState(findFlag); Func <bool> HoldingFlag() => () => isHoldingFlag; // Func<bool> EnemyIsWithinRange() => () => 15f >= Vector3.Distance(transform.position, (FindObjectsOfType<Purple>()) // .OrderBy(t=> Vector3.Distance(transform.position, t.transform.position)) // .FirstOrDefault().GetComponent<Transform>().position); // // Func<bool> EnemyIsNotWithinRange() => () => 15f < Vector3.Distance(transform.position, (FindObjectsOfType<Purple>()) // .OrderBy(t=> Vector3.Distance(transform.position, t.transform.position)) // .FirstOrDefault().GetComponent<Transform>().position); }
private void Awake() { if (instance == null) { instance = this; } else if (instance != this) { Destroy(this.gameObject); } DontDestroyOnLoad(this.gameObject); }
private void Start() { stats = GetComponent<Stats> (); uMC = GetComponent<UnitMovementController> (); uJC = GetComponent<UnitJobController> (); idle = new Idle (this); occupied = new Occupied (this); returnHome = new ReturnHome (this); fullfilingNeeds = new FullfilingNeeds (this); currentState = idle; }
void Start() { Begin(); AStar.SetAllNodes(); SprintContainer sprint = GetComponent <SprintContainer>(); bringFlagHome = new ReturnHome(theTransform, enemy.GetComponent <Transform>(), sprint, teamFlag); seekEnemyFlag = new SeekEnemyFlag(theTransform, sprint, enemyFlag); captureEnemy = new Cutoff(theTransform, sprint, enemyFlag, teamFlag); chaseEnemy = new Chase(theTransform, enemyTransform, sprint); machine = new StateMachine(seekEnemyFlag); initialEnemyFlagPosition = enemyFlagObject.transform.position; initialTeamFlagPosiiton = teamFlagObject.transform.position; }
void Start() { returnHome = GetComponent <ReturnHome>(); cameraController = GetComponent <CameraController>(); playerMovement = GetComponentInParent <PlayerMovement>(); }
public void BackToHomeScreen() => ReturnHome?.Invoke(this);