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; } }
/// <summary> /// Called when enemy is taking damage /// </summary> /// <param name="enemyProperty"></param> public void CallOnDamage(EnemyProperty enemyProperty) { if (enemyProperty != null && OnDamage != null) { OnDamage(enemyProperty); } }
private void OnEnable() { _flicker = GetComponent <SpriteFlicker> (); _enemy = GetComponentInParent <EnemyProperty> (); _enemy.OnDamage += StartFlicker; }
/// <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); }
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; } }
/// <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); } }
/// <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"); } }
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(); } } }
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; } }
public override void Initialize(EnemyProperty enemyProperty) { base.Initialize(enemyProperty); InitializeAttack(enemyProperty); InitializeMove(enemyProperty); }
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); } } }
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); }
protected virtual void Start() { _player = PlayerInput.trans; AnimController = GetComponent <SoliderAnimController>(); _box = GetComponent <BoxCollider2D>(); _curProperty = property; }
public override void Initialize(EnemyProperty enemyProperty) { base.Initialize(enemyProperty); _curShotTimes = m_shotTimes; _allShotDone = false; _timer = 0f; }
public JIColliderUnit(PlayerProperty player, JIColliderUnitType unitType = JIColliderUnitType.Player) { UnitType = unitType; EnemyBullet = null; PlayerBullet = null; Enemy = null; Player = player; }
public JIColliderUnit(EnemyProperty enemy, JIColliderUnitType unitType = JIColliderUnitType.Enemy) { UnitType = unitType; EnemyBullet = null; PlayerBullet = null; Player = null; Enemy = enemy; }
private void InitializeMove(EnemyProperty enemyProperty) { // Initialize destination _destination = FindNextPosition(); _moveDir = _destination.normalized; _moveTimer = 0; _moveDone = false; }
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)); }
public override void Initialize(EnemyProperty enemyProperty) { base.Initialize(enemyProperty); // Initialize destination _destination = FindNextPosition(); _moveDir = _destination.normalized; _timer = 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); } }
/// <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); } } }
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; }
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)); }
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)); } }
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的数据读取有问题"); } } }
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; } }
// 충돌 시 처리 메소드 private void OnTriggerEnter(Collider other) { // 충돌 객체가 "Enemy" 이면 if (other.tag == "Enemy") { // Enemy 속성 객체를 들고온다. enemyProperty = other.GetComponent <EnemyProperty>(); // Enemy 객체에 Bullet의 공격력 만큼 데미지를 준다. enemyProperty.TakeDamage(bulletPower); // bullet 객체 파괴 Destroy(gameObject); } }
/// <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; }