コード例 #1
0
ファイル: BossTurret.cs プロジェクト: qoobit/GameJam2016
    // 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);

    }
コード例 #2
0
    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();
                }
            }
        }
    }
コード例 #3
0
    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);
    }
コード例 #4
0
    //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);
        }
    }
コード例 #5
0
ファイル: Player.cs プロジェクト: iveeLynx/CentipedeUnity
    // 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;
        }
    }
コード例 #6
0
ファイル: Turret.cs プロジェクト: qoobit/GameJam2016
    // 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);
    }
コード例 #7
0
ファイル: EnemyHead.cs プロジェクト: iveeLynx/CentipedeUnity
    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();
    }
コード例 #8
0
ファイル: Player.cs プロジェクト: iveeLynx/CentipedeUnity
    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");
    }
コード例 #9
0
ファイル: Gun.cs プロジェクト: juanluisferb/Stranded-PFM
    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();
                }
            }
        }
    }