// Use this for initialization protected override void Start() { base.Start(); head = GetComponent<EnemyHead>(); body = this.transform.FindChild("Body"); enemyWalk = GetComponent<EnemyWalk>(); animator = GetComponent<Animator>(); rigidBody = GetComponent<Rigidbody>(); arenaLevel = (ArenaLevel)GameControl.control.level; //Load a blaster as our weapon GameObject turretCannon = GameControl.Spawn(Spawnable.Type.WEAPON_TURRET_CANNON, gameObject.transform.position, gameObject.transform.rotation); turretCannon.transform.parent = body; turretCannon.transform.localPosition = new Vector3(0f, 1f, 0f); weapon = turretCannon.GetComponent<Weapon>(); turretCannon.GetComponent<TurretCannon>().waypointCollection = enemyWalk.waypointCollection; //Set our initial state to wander setCurrentState((int)State.WANDER); head.state = EnemyHead.State.IDLE; enemyWalk.state = EnemyWalk.State.IDLE; //Set our head to search List<GameObject> heroList = GameControl.control.level.GetHeroList(); head.SearchForTargets(heroList); }
private void LaunchProyectile() { if (_chargerCurrentAmmo == 0) { _emptyClip.Play(); return; } if (_chargerCurrentAmmo > 0) { _chargerCurrentAmmo -= 1; _handAnimator.SetTrigger("ShotgunShoot"); shoot.PlayOneShot(shoot.clip); OVRHaptics.Channels[1].Preempt(new OVRHapticsClip(shoot.clip, 0)); if (_fireMuzzle != null) { _fireMuzzle.Play(); } RaycastHit hit; //Raycast if (Physics.Raycast(_aimPoint.transform.position, _aimPoint.transform.forward, out hit, _maxGunDistance)) { EnemyBehaviour _enemyB = hit.collider.GetComponentInParent <EnemyBehaviour>(); EnemyHead head = hit.collider.GetComponent <EnemyHead>(); EnemyMovement _enemyMov = hit.collider.GetComponent <EnemyMovement>(); //Si le impacto en la cabeza lo aturdo y si es vulnerable además le hago daño if (head != null) { head.HitByShotGun(); _enemyB.TakeDamage(_damage); return; } //En el torso sólo le hago daño else if (_enemyB != null) { _enemyB.TakeDamage(_damage); return; } //Si le disparo le alerto else if (_enemyMov != null) { _enemyMov.EnemyAlert(); } } } }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("Player")) { // Damage player - caused by enemy shooting Player.GetInstanceHealth()?.Damage(damage); Score.IncreaseScore(ScoreValues.playerShot); } else if (collision.gameObject.layer == LayerMask.NameToLayer("Enemy")) { Armour armour = collision.gameObject.GetComponent <Armour>(); if (armour != null && armour.IsActive()) { // Damage armour - caused by player shooting armour?.Damage(damage); Score.IncreaseScore(ScoreValues.armouredEnemyShot); } else if (collision.gameObject.CompareTag("Head")) { EnemyHead enemyHead = collision.gameObject.GetComponent <EnemyHead>(); // Kill enemy with 1 shot enemyHead?.KillEnemy(); Score.IncreaseScore(ScoreValues.enemyHeadshot); } else if (collision.gameObject.CompareTag("HeadBoss")) { BossHead enemyHead = collision.gameObject.GetComponent <BossHead>(); // Damage enemy - caused by player shooting enemyHead?.DamageHead(damage); Score.IncreaseScore(ScoreValues.enemyHeadshot); } else { IEnemyController enemyController = collision.gameObject.GetComponent <IEnemyController>(); // Damage enemy - caused by player shooting enemyController?.DamageEnemy(damage); Score.IncreaseScore(ScoreValues.enemyShot); } } else if (collision.gameObject.layer == LayerMask.NameToLayer("Cover")) { Health coverHealth = collision.gameObject.GetComponent <Health>(); // Damage cover - caused by enemy shooting coverHealth?.Damage(damage); } // Destroy Bullet Destroy(gameObject); }
//Si el jugador cruza el trigger, éste asigna nuevos puntos de patrulla y de alerta al monstruo para que siempre //vaya a la zona a la que va el jugador private void OnTriggerEnter(Collider other) { if (other.CompareTag("Hands")) { EnemyMovement enemyMov = _enemy.GetComponent <EnemyMovement>(); enemyMov._bIsIdling = false; enemyMov._patrolPoints = newPatrolPoints; enemyMov._currentPathIndex = 0; EnemyHead headEnemy = _enemy.GetComponentInChildren <EnemyHead>(); headEnemy._AlertPatrolPoints = newAlertPatrolPoints; enemyMov._agent.SetDestination(enemyMov._patrolPoints[enemyMov._currentPathIndex].position); } }
// Creates segment of centipede private void CreateCentipede() { Vector3 position = transform.position; position.x = 0; position.y = maxY - 1; EnemyHead newEnemyHead = Instantiate(enemyHead, position, enemyHead.transform.rotation); SegmentInfo.centipede.Add(newEnemyHead); segments--; timer = 0.2f; if (segments == 0) { isAlive = true; } }
// Use this for initialization protected override void Start() { base.Start(); head = GetComponent<EnemyHead>(); body = this.transform.FindChild("Body"); rigidBody = GetComponent<Rigidbody>(); enemyWalk = GetComponent<EnemyWalk>(); animator = GetComponent<Animator>(); //Load a blaster as our weapon GameObject blasterWeapon = GameControl.Spawn(Spawnable.Type.WEAPON_BLASTER, gameObject.transform.position, gameObject.transform.rotation); blasterWeapon.transform.parent = body; weapon = blasterWeapon.GetComponent<Weapon>(); weapon.weaponFireMode = 0; //Set our head to search List<GameObject> heroList = GameControl.control.level.GetHeroList(); head.SearchForTargets(heroList); }
public override void ReceiveDamage() { try { if (SegmentInfo.centipede[segmentNumber + 1] != null) { EnemyHead CurrentSegment = (EnemyHead)SegmentInfo.centipede[segmentNumber + 1]; CurrentSegment.spriteRenderer.sprite = Resources.Load <Sprite>("EnemyHead2"); } } catch (Exception exception) { Debug.Log(exception.ToString()); } Vector3 position = transform.position; EnemyMushroom newEnemyMushroom = Instantiate(enemyMushroom, position, enemyMushroom.transform.rotation); Player.score += (Player.wave * 5); Player.livingSegments--; base.ReceiveDamage(); }
private void Awake() { // Create class object for creating arraylist with Cintepede segments info SegmentInfo segInfo = new SegmentInfo(); // Timer for generating segments timerMax = 0.8f; timer = timerMax; spriteRender = GetComponent <SpriteRenderer>(); // Find length from center of player's ship to border boxCollider2D = GetComponent <BoxCollider2D>(); Vector3 pos = transform.position; leftradius = pos.x - boxCollider2D.bounds.min.x; upperradius = pos.y - boxCollider2D.bounds.min.y; // Loading prefabs enemyMushroom = Resources.Load <EnemyMushroom>("MushObstacle"); enemyHead = Resources.Load <EnemyHead>("EnemyHead"); bullet = Resources.Load <Bullet>("Bullet"); }
private void LaunchProyectile() { if (_chargerCurrentAmmo == 0 && !_gunShoot.GetBool("NoAmmo")) { _gunShoot.SetBool("NoAmmo", true); _noAmmo.Play(); return; } if (_chargerCurrentAmmo > 0) { _chargerCurrentAmmo -= 1; _handAnimator.SetTrigger("GunShoot"); _gunShoot.SetTrigger("Shoot"); shoot.Play(); //Acción de la vibración mando OVRHaptics.Channels[1].Preempt(new OVRHapticsClip(shoot.clip, 0)); //Animación pistola if (_fireMuzzle != null) { _fireMuzzle.Play(); } RaycastHit hit; //Raycast //Funcionamiento similar al de la escopeta, pero la pistola necesita 3 disparos en la cabeza del enemigo para que éste se aturda if (Physics.Raycast(_aimPoint.transform.position, _aimPoint.transform.forward, out hit, _maxGunDistance)) { EnemyBehaviour _enemyB = hit.collider.GetComponentInParent <EnemyBehaviour>(); EnemyHead head = hit.collider.GetComponent <EnemyHead>(); EnemyMovement _enemyMov = hit.collider.GetComponent <EnemyMovement>(); //Si impacta el disparo en la cabeza, llamo al método del monstruo para que reproduzca la animación, aparte de recibir daño if (head != null) { head.Hit(); _enemyB.TakeDamage(_damage); return; } //El enemigo recibirá daño else if (_enemyB != null) { _enemyB.TakeDamage(_damage); return; } //El enemigo será alertado por la acción del disparo else if (_enemyMov != null) { _enemyMov.EnemyAlert(); } } } }