private IEnumerator Coroutine() { GameObject bullet = GameObject.Instantiate(_bullet); bullet.transform.position = _playerController.StartPoint.transform.position; NrcEventForwarder forwarder = bullet.GetComponent <NrcEventForwarder>(); forwarder.OnTriggerEnterEvent += (col) => { if (col.gameObject.tag == TagDefine.TAG_ENEMY) { EnemyController enemyController = col.gameObject.GetComponent <EnemyController>(); enemyController.Damage(20); GameObject.Destroy(bullet); } }; Vector3 force; force = _playerController.Houdai.transform.forward * 100f; bullet.GetComponent <Rigidbody>().AddForce(force, ForceMode.VelocityChange); yield return(new WaitForSeconds(2)); GameObject.Destroy(bullet); yield return(null); }
private IEnumerator ShootCoroutine(EnemyController ec) { GameObject bullet = GameObject.Instantiate(_bullet); bullet.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f); bullet.transform.position = _enemyTargetController.transform.position + new Vector3(0, 1, 0); NrcEventForwarder forwarder = bullet.GetComponent <NrcEventForwarder>(); forwarder.OnTriggerEnterEvent += (col) => { if (col.gameObject.tag == TagDefine.TAG_ENEMY) { EnemyController enemyController = col.gameObject.GetComponent <EnemyController>(); enemyController.Damage(5); GameObject.Destroy(bullet); } }; Vector3 force; bullet.transform.LookAt(ec.transform); force = bullet.transform.forward * 100f; bullet.GetComponent <Rigidbody>().AddForce(force, ForceMode.VelocityChange); yield return(new WaitForSeconds(2)); GameObject.Destroy(bullet); yield return(null); }
public void Init(EnemyController enemyController) { _enemyController = enemyController; _navMeshAgent = _enemyController.GetComponent <NavMeshAgent>(); _navMeshAgent.speed = 1.5f; _explosion = NrcResourceManager.GetGameObject(ResourceDefine.PREFAB_EXPLOSION) as GameObject; _enemyController.EnemyDeadEvent += (e) => { Observable.FromCoroutine(observe => Explodison(_enemyController.transform.position)).Subscribe(); if (_iDisposable != null) { _iDisposable.Dispose(); } }; NrcEventForwarder nrcEventForwarder = enemyController.GetComponent <NrcEventForwarder>(); nrcEventForwarder.OnTriggerStayEvent += (col) => { if (col.gameObject.tag == TagDefine.TAG_ENEMY_TARGET && _iDisposable != null) { EnemyTargetController enemyTargetController = col.gameObject.GetComponent <EnemyTargetController>(); enemyTargetController.Damage(1); } }; EnemyTargetController etc = NrcGameManager.NrcGameEnemyTargetService.GetMostNearEnemyTaget(_enemyController); if (etc != null) { etc.EnemyTargetDeadAfterEvent += () => { if (_enemyController != null) { etc = NrcGameManager.NrcGameEnemyTargetService.GetMostNearEnemyTaget(_enemyController); if (etc != null) { _navMeshAgent.SetDestination(etc.transform.position); } } }; _navMeshAgent.enabled = true; _navMeshAgent.SetDestination(etc.transform.position); } }