Example #1
0
    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);
    }
Example #2
0
    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);
    }
Example #3
0
    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);
        }
    }