private void OnWalkFinish(object sender, EventArgs e) { //begin attack and other bullshit //spawn cops Vector3 tng = Bezier.GetTangent3d(LevelController.Instance._path.Nodes[_walker.CurrNodeIdx]._ctrlPts, _walker.CurrTngOffset); Vector3 binrm = Bezier.GetBinormal3d(LevelController.Instance._path.Nodes[_walker.CurrNodeIdx]._ctrlPts, _walker.CurrTngOffset, transform.up); _cops = new List <CopBehavior>(); for (int i = 0; i < _copNum; i++) { CopBehavior cop = Instantiate(_copPrefab, transform.position, transform.rotation) as CopBehavior; cop.transform.parent = transform; cop.transform.position -= tng * _spawnTngOffset; cop.transform.position += binrm * _copSpace * (i > 0 ? ((float)((i - 1) / 2) + 1f) : 0f) * (i % 2 == 0 ? 1f : -1f); cop._target = LevelController.Instance._heroObj; _cops.Add(cop); } StartCoroutine(AttackCoroutine()); StartCoroutine(CheckEndCoroutine()); }
public override void StartEvent() { LevelController.Instance._legionCtrl.SlowDown(); //attach walker //suble bug about rotation- - _walker = PathSurfaceWalker.AttachPathSurfaceWalker(gameObject, _path, _startNodeIdx, _startTngOffset, _startBinrmOffset, 0f, _speed); _walker.WalkFinish += OnWalkFinish; _walker.MoveOnPathSurface(_startNodeIdx, _startTngOffset, 0f); Vector3 tng = Bezier.GetTangent3d(_path.Nodes[_startNodeIdx]._ctrlPts, _startTngOffset); Vector3 binrm = Bezier.GetBinormal3d(_path.Nodes[_startNodeIdx]._ctrlPts, _startTngOffset, transform.up); //instantiate cop squad _cops = new List <CopBehavior>(); for (int i = 0; i < _copNum; i++) { CopBehavior cop = Instantiate(_copPrefab, transform.position, transform.rotation) as CopBehavior; cop.transform.parent = transform; cop.transform.position += binrm * _copSpace * (i > 0 ? ((float)((i - 1) / 2) + 1f) : 0f) * (i % 2 == 0 ? 1f : -1f); //cop.transform.position += binrm * _copSpace * i; _cops.Add(cop); } SoundManagerSingletonWrapper.Instance.GetComponent <EmitterSoundManager>(). Play(UnityEngine.Random.Range(11, 14), transform, AudioType.GameSFX); _start = true; }
private IEnumerator TutorialCoroutine() { //charging _chargingCanvas.gameObject.SetActive(true); _inspirationCanvas.gameObject.SetActive(false); _reflectionCanvas.gameObject.SetActive(false); StartCoroutine(CheckChargeFinish()); while (!_chargingFinish) { yield return(null); } //inspiration _chargingCanvas.gameObject.SetActive(false); _inspirationCanvas.gameObject.SetActive(true); _reflectionCanvas.gameObject.SetActive(false); StartCoroutine(CheckInspirationFinish()); while (!_inspirationFinish) { yield return(null); } //reflection _chargingCanvas.gameObject.SetActive(false); _inspirationCanvas.gameObject.SetActive(false); _reflectionCanvas.gameObject.SetActive(true); LevelController.Instance._legionCtrl._crowd.GetComponent <BoxCollider>().enabled = false; yield return(new WaitForSeconds(3f)); _cop = Instantiate(_copPrefab, transform.position, transform.rotation) as CopBehavior; _cop.transform.parent = transform; _copWalker = PathSurfaceWalker.AttachPathSurfaceWalker(_cop.gameObject, _path, _copNodeIdx, _copTngOffset, _copBinrmOffset, 0f, _copSpeed); _copWalker.WalkFinish += OnWalkFinish; _copWalker.MoveOnPathSurface(_copNodeIdx, _copTngOffset, 0f); StartCoroutine(CheckReflectionFinish()); while (!_reflectionFinish) { yield return(null); } LevelController.Instance._legionCtrl._crowd.GetComponent <BoxCollider>().enabled = true; EndEvent(); }
private IEnumerator TutorialCoroutine() { //charging _chargingCanvas.gameObject.SetActive(true); _inspirationCanvas.gameObject.SetActive(false); _reflectionCanvas.gameObject.SetActive(false); StartCoroutine(CheckChargeFinish()); while (!_chargingFinish) yield return null; //inspiration _chargingCanvas.gameObject.SetActive(false); _inspirationCanvas.gameObject.SetActive(true); _reflectionCanvas.gameObject.SetActive(false); StartCoroutine(CheckInspirationFinish()); while (!_inspirationFinish) yield return null; //reflection _chargingCanvas.gameObject.SetActive(false); _inspirationCanvas.gameObject.SetActive(false); _reflectionCanvas.gameObject.SetActive(true); LevelController.Instance._legionCtrl._crowd.GetComponent<BoxCollider>().enabled = false; yield return new WaitForSeconds(3f); _cop = Instantiate(_copPrefab, transform.position, transform.rotation) as CopBehavior; _cop.transform.parent = transform; _copWalker = PathSurfaceWalker.AttachPathSurfaceWalker(_cop.gameObject, _path, _copNodeIdx, _copTngOffset, _copBinrmOffset, 0f, _copSpeed); _copWalker.WalkFinish += OnWalkFinish; _copWalker.MoveOnPathSurface(_copNodeIdx, _copTngOffset, 0f); StartCoroutine(CheckReflectionFinish()); while (!_reflectionFinish) yield return null; LevelController.Instance._legionCtrl._crowd.GetComponent<BoxCollider>().enabled = true; EndEvent(); }