Example #1
0
            public override void UpdateState(EnemyProperty enemyProperty)
            {
                base.UpdateState(enemyProperty);
                if (_stateEnd)
                {
                    return;
                }

                // Add _timer to check if it is end.
                _timer += JITimer.Instance.DeltTime;
                if (_timer >= m_totalMoveTime)
                {
                    _stateEnd = true;
                    CallOnStateEnd();
                }

                Vector3 nextPosition = enemyProperty.transform.position + _moveDir * m_moveSpeed * JITimer.Instance.DeltTime;

                // Move overhead, find next destination
                if (Vector3.Dot(nextPosition - _destination, _moveDir) > 0)
                {
                    _destination = FindNextPosition();
                    _moveDir     = (_destination - nextPosition).normalized;
                }
                else
                {
                    enemyProperty.transform.position = nextPosition;
                }
            }
Example #2
0
 /// <summary>
 /// Called when enemy is taking damage
 /// </summary>
 /// <param name="enemyProperty"></param>
 public void CallOnDamage(EnemyProperty enemyProperty)
 {
     if (enemyProperty != null && OnDamage != null)
     {
         OnDamage(enemyProperty);
     }
 }
Example #3
0
    private void OnEnable()
    {
        _flicker = GetComponent <SpriteFlicker> ();

        _enemy           = GetComponentInParent <EnemyProperty> ();
        _enemy.OnDamage += StartFlicker;
    }
Example #4
0
    /// <summary>
    /// Start is called on the frame when a script is enabled just before
    /// any of the Update methods is called the first time.
    /// </summary>
    private void Start()
    {
        _enemy = GetComponent <EnemyProperty> ();

        _matPropertyBlock = new MaterialPropertyBlock();
        _enemy.m_enemySprite.GetPropertyBlock(_matPropertyBlock);
    }
Example #5
0
            public override void UpdateState(EnemyProperty enemyProperty)
            {
                base.UpdateState(enemyProperty);

                Vector3 nextPosition = enemyProperty.transform.position + _moveDir * m_moveSpeed * JITimer.Instance.DeltTime;

                // Is move overhead? If true, means reach destination
                if (Vector3.Dot(nextPosition - m_destination, _moveDir) > 0 &&
                    !_reachDestination)
                {
                    _reachDestination = true;
                    _waitTimer        = 0;
                }

                if (_reachDestination) // Wait and end the state
                {
                    _waitTimer += JITimer.Instance.DeltTime;
                    if (_waitTimer >= m_waitTimeWhenReachDest)
                    {
                        _stateEnd = true;
                        CallOnStateEnd();
                        Debug.Log(Time.time);
                    }
                }
                else // Update  position
                {
                    enemyProperty.transform.position = nextPosition;
                }
            }
Example #6
0
        /// <summary>
        /// 从本地读取怪物清单(也可以从服务器获取)
        /// </summary>
        void ReadEnemyInfoFromLocalText()
        {
            string allStr = txtEnemyInfoList.ToString();

            string[] itemStrArray = allStr.Split('\n');
            //编号|类型|名称|等级|血量|攻击|防御|速度|致命一击|掉落ID|搜索范围|攻击距离
            foreach (string itemStr in itemStrArray)
            {
                string[] proArray = itemStr.Split('|');
                Debug.Log(itemStr);
                EnemyProperty enemy = new EnemyProperty();
                enemy.ID                  = int.Parse(proArray[0]);
                enemy.TYPE                = EnemyType.Boss;
                enemy.Name                = proArray[2];
                enemy.Level               = int.Parse(proArray[3]);
                enemy.HP                  = int.Parse(proArray[4]);
                enemy.Attack              = int.Parse(proArray[5]);
                enemy.Defence             = int.Parse(proArray[6]);
                enemy.Dexterity           = int.Parse(proArray[7]);
                enemy.CriticalTriggerRate = float.Parse(proArray[8]);
                enemy.CriticalAttackRate  = float.Parse(proArray[9]);
                enemy.DropID              = int.Parse(proArray[10]);
                enemy.CanFindPlayer       = float.Parse(proArray[11]);
                enemy.CanAttackplayer     = float.Parse(proArray[12]);
                enemyInfoDic.Add(enemy.Name, enemy);
            }
        }
Example #7
0
 /// <summary>
 /// Excute every frame to update state.
 /// </summary>
 /// <param name="enemyProperty"></param>
 public virtual void UpdateState(EnemyProperty enemyProperty)
 {
     if (enemyProperty == null)
     {
         Debug.LogError("Enemy Property for AI is null!\n");
     }
 }
Example #8
0
            public override void UpdateState(EnemyProperty enemyProperty)
            {
                base.UpdateState(enemyProperty);
                if (_stateEnd)
                {
                    return;
                }

                // Shot
                if (_curShotTimes > 0)
                {
                    Shot();
                }

                // After m_timeTWaitAfterShot seconds, end the state.
                if (_allShotDone)
                {
                    _timer += JITimer.Instance.DeltTime;

                    if (_timer >= m_timeToWaitAfterShotDone)
                    {
                        _stateEnd = true;
                        CallOnStateEnd();
                    }
                }
            }
Example #9
0
            public override void UpdateState(EnemyProperty enemyProperty)
            {
                base.UpdateState(enemyProperty);
                if (_stateEnd)
                {
                    return;
                }

                _moveTimer   += JITimer.Instance.DeltTime;
                _attackTimer += JITimer.Instance.DeltTime;

                // Update attack
                UpdateAttack(enemyProperty);

                // Update movement
                if (_moveTimer < m_totalTime)
                {
                    UpdateMove(enemyProperty);
                }
                // Movement end
                else if (!_moveDone)
                {
                    _moveDone    = true;
                    _attackTimer = 0f;
                }
            }
Example #10
0
            public override void Initialize(EnemyProperty enemyProperty)
            {
                base.Initialize(enemyProperty);

                InitializeAttack(enemyProperty);
                InitializeMove(enemyProperty);
            }
Example #11
0
    private void PlayerBullet_Enemy(JIBulletProperty playerBullet, EnemyProperty enemy)
    {
        if (playerBullet.Type == JIBulletType.Laser)
        {
            var laser = playerBullet.GetComponent <Laser> ();

            if (laser.DamageTimer < laser.Interval)
            {
                return;
            }
            laser.DamageTimer = 0f;

            AttackEnemy(laser.Damage, enemy);
        }
        else if (playerBullet.Type == JIBulletType.Normal)
        {
            AttackEnemy(playerBullet.Damage, enemy);
            BulletPool.Instance.ReleaseGameObject(playerBullet.gameObject);
        }
        else if (playerBullet.Type == JIBulletType.Bomb)
        {
            if (!enemy.m_elite)
            {
                AttackEnemy(enemy.m_health, enemy);
            }
        }
    }
Example #12
0
 void Start()
 {
     _MyTransform   = this.gameObject.transform;
     _GoHero        = GameObject.FindGameObjectWithTag(Tag.Player);
     _EnemyProperty = this.gameObject.GetComponent <EnemyProperty>();
     _cc            = this.gameObject.GetComponent <CharacterController>();
 }
    void Start()
    {
        animator       = GetComponent <Animator>();
        enemyProperty  = GetComponent <EnemyProperty>();
        playerProperty = GameObject.Find("PlayerTest").GetComponent <PlayerProperty>();

        animator.SetInteger("State", 1);
    }
Example #14
0
        protected virtual void Start()
        {
            _player        = PlayerInput.trans;
            AnimController = GetComponent <SoliderAnimController>();
            _box           = GetComponent <BoxCollider2D>();

            _curProperty = property;
        }
Example #15
0
            public override void Initialize(EnemyProperty enemyProperty)
            {
                base.Initialize(enemyProperty);

                _curShotTimes = m_shotTimes;
                _allShotDone  = false;
                _timer        = 0f;
            }
Example #16
0
 public JIColliderUnit(PlayerProperty player,
                       JIColliderUnitType unitType = JIColliderUnitType.Player)
 {
     UnitType     = unitType;
     EnemyBullet  = null;
     PlayerBullet = null;
     Enemy        = null;
     Player       = player;
 }
Example #17
0
 public JIColliderUnit(EnemyProperty enemy,
                       JIColliderUnitType unitType = JIColliderUnitType.Enemy)
 {
     UnitType     = unitType;
     EnemyBullet  = null;
     PlayerBullet = null;
     Player       = null;
     Enemy        = enemy;
 }
Example #18
0
            private void InitializeMove(EnemyProperty enemyProperty)
            {
                // Initialize destination
                _destination = FindNextPosition();
                _moveDir     = _destination.normalized;

                _moveTimer = 0;
                _moveDone  = false;
            }
Example #19
0
    private void StartFlicker(EnemyProperty enemyProperty)
    {
        if (_flicker == null)
        {
            Debug.LogErrorFormat("The {0} enemy doesn't have a SpriteFlicker component!", enemyProperty.gameObject.name);
        }

        StopAllCoroutines();
        StartCoroutine(Flickering(_flicker));
    }
Example #20
0
            public override void Initialize(EnemyProperty enemyProperty)
            {
                base.Initialize(enemyProperty);

                // Initialize destination
                _destination = FindNextPosition();
                _moveDir     = _destination.normalized;

                _timer = 0;
            }
Example #21
0
    private void AttackEnemy(int damage, EnemyProperty enemy)
    {
        enemy.m_health -= damage;
        enemy.CallOnDamage(enemy);

        if (enemy.m_health <= 0 && !enemy.m_isDead)
        {
            enemy.m_isDead = true;
            Destroy(enemy.gameObject);
        }
    }
Example #22
0
 /// <summary>
 /// 得到所有(活着的)敌人,放入“敌人集合”
 /// </summary>
 private void GetEnemysToArray()
 {
     GameObject[] goEnemys = GameObject.FindGameObjectsWithTag(Tag.Enemy);
     _ListEnemys.Clear();
     foreach (GameObject goItem in goEnemys)
     {
         EnemyProperty enemy = goItem.GetComponent <EnemyProperty>();
         if (enemy && enemy.CurrentState != EnemyState.Dead)
         {
             _ListEnemys.Add(goItem);
         }
     }
 }
Example #23
0
            public override void Initialize(EnemyProperty enemyProperty)
            {
                base.Initialize(enemyProperty);

                _moveToCenterDone = false;
                _alignShotDone    = false;
                _shotPatternDone  = false;

                _timer        = 0f;
                _curShotTimes = m_shotTimes;

                m_alignShotLeft.m_bulletSpeed = m_alignShotRight.m_bulletSpeed = m_alignBulletSpeed;
            }
Example #24
0
    private void StartFlicker(EnemyProperty enemyProperty)
    {
        var flicker = enemyProperty.m_enemySprite.GetComponent <DevSetEnemySprite> ();

        if (flicker == null)
        {
            Debug.LogErrorFormat("The {0} enemy doesn't have a DevSetEnemySprite component!",
                                 enemyProperty.gameObject.name);
        }

        StopAllCoroutines();
        StartCoroutine(Flickering(flicker));
    }
Example #25
0
    IEnumerator NewEnemy()
    {
        yield return(new WaitForSeconds(time));

        //发送消息,让其他客户端产生相应的敌人
        foreach (GameObject enemy in enemyArray)
        {
            List <EnemyProperty> propertyList = new List <EnemyProperty>();
            foreach (Transform pos in posArray)
            {
                GameObject go = (GameObject)Instantiate(enemy, pos.position, Quaternion.identity);

                string GUID         = Guid.NewGuid().ToString();
                int    targetRoleId = GameController.Instance.GetRandomRoleId();
                if (go.GetComponent <Enemy>() != null)  //普通敌人
                {
                    Enemy enemytemp = go.GetComponent <Enemy>();
                    enemytemp.guid         = GUID; //为每个生成的敌人生成唯一的GUID
                    enemytemp.targetRoleId = targetRoleId;
                }
                else if (go.GetComponent <Boss>() != null)  //Boss
                {
                    Boss bossTemp = go.GetComponent <Boss>();
                    bossTemp.guid         = GUID;
                    bossTemp.targetRoleId = targetRoleId;
                }
                EnemyProperty property = new EnemyProperty()
                {
                    guid         = GUID,
                    perfabName   = go.name.Substring(0, go.name.LastIndexOf("(")),
                    targetRoleId = targetRoleId,
                    position     = new Vector3Object(pos.position)
                };
                //Debug.Log(GUID + "  " + property.perfabName);
                propertyList.Add(property);
                TranscriptManager.instance.AddEnemy(go);  //加入敌人集合
            }

            if (GameController.Instance.type == FightType.Team && GameController.Instance.isMaster)
            {
                EnemyCreatModel model = new EnemyCreatModel()
                {
                    list = propertyList
                };
                enemyController.SendCreatEnemy(model);  //发起敌人创建的请求
            }

            yield return(new WaitForSeconds(rate));
        }
    }
Example #26
0
 public void Init()
 {
     property        = GetComponent <EnemyProperty>();
     property.State  = EnemyState.Idle;
     tempPos         = transform.position;
     nav             = GetComponent <NavMeshAgent>();
     animator        = transform.GetChild(0).GetComponent <Animator>();
     spriteRenderer  = transform.GetChild(0).GetComponent <SpriteRenderer>();
     player          = GameObject.FindGameObjectWithTag("Player");
     exclamationPool = GameObject.Find("ExclamationPool");
     exclamationMark = null;
     weightOfSound   = 0;
     elapsTime       = 0;
 }
 /// <summary>
 /// 初始化bossInfo
 /// </summary>
 void InitBossInfo()
 {
     foreach (string item in EnemyPropertyManager.Instance.enemyInfoDic.Keys)
     {
         Debug.Log(item);
         if (this.gameObject.name.Contains(item))
         {
             _bossInfo = EnemyPropertyManager.Instance.enemyInfoDic[item];
         }
         else
         {
             Debug.LogWarning(" EnemyPropertyManager的数据读取有问题");
         }
     }
 }
Example #28
0
            private void UpdateMove(EnemyProperty enemyProperty)
            {
                Vector3 nextPosition = enemyProperty.transform.position + _moveDir * m_moveSpeed * JITimer.Instance.DeltTime;

                // Move overhead, find next destination
                if (Vector3.Dot(nextPosition - _destination, _moveDir) > 0)
                {
                    _destination = FindNextPosition();
                    _moveDir     = (_destination - nextPosition).normalized;
                }
                else
                {
                    enemyProperty.transform.position = nextPosition;
                }
            }
Example #29
0
    // 충돌 시 처리 메소드
    private void OnTriggerEnter(Collider other)
    {
        // 충돌 객체가 "Enemy" 이면
        if (other.tag == "Enemy")
        {
            // Enemy 속성 객체를 들고온다.
            enemyProperty = other.GetComponent <EnemyProperty>();

            // Enemy 객체에 Bullet의 공격력 만큼 데미지를 준다.
            enemyProperty.TakeDamage(bulletPower);

            // bullet 객체 파괴
            Destroy(gameObject);
        }
    }
Example #30
0
    /// <summary>
    /// Initialize a state. Call once.
    /// </summary>
    /// <param name="enemyProperty"></param>
    public virtual void Initialize(EnemyProperty enemyProperty)
    {
        if (enemyProperty == null)
        {
            Debug.LogError("Enemy Property for AI is null!\n");
        }

        _AIController = enemyProperty.GetComponent <BaseAIController> ();
        if (_AIController == null)
        {
            Debug.LogError("Enemy AI Controller is null!\n");
        }

        _stateEnd = false;
    }