public override void Update(PlayerController pc)
    {
        if (!pc.lineRenderer.gameObject.activeSelf)
        {
            pc.lineRenderer.gameObject.SetActive(true);
        }
        Vector3    endRaycastPos = Vector3.forward * pc.playerModel.laserDistance;
        RaycastHit hit;

        if (Physics.Raycast(new Ray(pc.lineRenderer.transform.position, pc.lineRenderer.transform.forward), out hit, pc.playerModel.laserDistance, pc.shootLayerMask.value))
        {
            endRaycastPos = Vector3.forward * hit.distance;
            GroundEnemy gEnemy = hit.collider.GetComponent <GroundEnemy>();
            if (gEnemy != null)
            {
                gEnemy.TakeDamage(pc.playerModel.laserDamage);
            }
            else
            {
                FlyingEnemy fEnemy = hit.collider.GetComponent <FlyingEnemy>();
                if (fEnemy != null)
                {
                    fEnemy.TakeDamage(pc.playerModel.laserDamage);
                }
            }
        }
        pc.lineRenderer.SetPosition(1, endRaycastPos);
        time -= Time.deltaTime;
        pc.Move();
        pc.Aim();
        pc.CheckHabilities();
    }
    private void Explode()
    {
        hasExploded = true;
        //Instantiate(explosionEffect, transform.position, transform.rotation);

        Collider[] colliders = Physics.OverlapSphere(transform.position, explosionRadius);

        foreach (Collider nearbyObject in colliders)
        {
            /*Rigidbody rgb = nearbyObject.GetComponent<Rigidbody>();
             * if (rgb != null)
             * {
             *  rgb.AddExplosionForce(force, transform.position, explosionRadius);
             * }*/

            GroundEnemy gEnemy = nearbyObject.GetComponent <GroundEnemy>();
            if (gEnemy != null)
            {
                gEnemy.TakeDamage(damage);
            }
            else
            {
                FlyingEnemy fEnemy = nearbyObject.GetComponent <FlyingEnemy>();
                if (fEnemy != null)
                {
                    fEnemy.TakeDamage(damage);
                }
            }
            Destroy(gameObject);
        }
        Destroy(gameObject);
    }
Exemple #3
0
    //碰撞后处理阻挡的委托
    private void OnCollisionEnter(Collision other)
    {
        int objectlayermask = 1 << other.gameObject.layer;

        if ((objectlayermask & LayerMask.GetMask(new string[1] {
            "enemy"
        })) > 0)
        {
            GroundEnemy enemy = other.gameObject.GetComponent <GroundEnemy>();
            enemy.stopBy = gameObject.GetComponent <GroundSoilder>();
            StopEnemy(enemy, gameObject.GetComponent <GroundSoilder>());
        }
    }
Exemple #4
0
 //达到阻挡数上线后,让物理引擎忽视该刚体
 private void StopEnemy(GroundEnemy enemy, GroundSoilder soilder)
 {
     if (soilder.nowstop < soilder.stopnum)
     {
         enemy.canMove = false;
         soilder.nowstop++;
     }
     else
     {
         enemy.canMove = true;
         gameObject.GetComponent <Rigidbody>().isKinematic = true;
     }
 }
Exemple #5
0
 // Update is called once per frame
 void Update()
 {
     //If health reaches 0 the enemy dies
     if (health <= 0)
     {
         Destroy(gameObject);
         Instantiate(blood, transform.position, Quaternion.identity);
         if (this.tag == "Boss")
         {
             SceneManager.LoadScene(5);
         }
     }
     if (dazedTime <= 0)  //Add multiplier too
     {
         if (this.tag == "Skeleton")
         {
             skeleton = gameObject.GetComponent <GroundEnemy>();
             skeleton.restoreSpeed();
         }
         else if (this.tag == "Bat")
         {
             bat = gameObject.GetComponent <FlyingEnemy>();
             bat.restoreSpeed();
         }
         else if (this.tag == "Boss")
         {
             boss           = gameObject.GetComponent <BossEnemy>();
             boss.moveSpeed = 1;
         }
     }
     else
     {
         if (this.tag == "Skeleton")
         {
             skeleton           = gameObject.GetComponent <GroundEnemy>();
             skeleton.moveSpeed = 0;
         }
         else if (this.tag == "Bat")
         {
             bat           = gameObject.GetComponent <FlyingEnemy>();
             bat.moveSpeed = 0;
         }
         else if (this.tag == "Boss")
         {
             boss           = gameObject.GetComponent <BossEnemy>();
             boss.moveSpeed = 0;
         }
         dazedTime -= Time.deltaTime;
     }
 }
Exemple #6
0
        public void onCollide(Entity e)
        {
            spritemap.Play("BubblePop", false);

            if (e is GroundEnemy)
            {
                GroundEnemy enemy = (GroundEnemy)e;
                enemy.Health -= 1;
            }
            if (e is BossArms)
            {
                BossArms enemy = (BossArms)e;
                enemy.Health -= 1;
            }
        }
Exemple #7
0
        public void onCollide(Entity e)
        {
            World.Remove(this);

            if (e is GroundEnemy)
            {
                GroundEnemy enemy = (GroundEnemy)e;
                enemy.Health -= 2;
            }
            if (e is BossArms)
            {
                BossArms enemy = (BossArms)e;
                enemy.Health -= 1;
            }
        }
 void OnTriggerEnter(Collider col)
 {
     if (col.gameObject.layer == LayerMask.NameToLayer("Enemy"))
     {
         GroundEnemy gEnemy = col.GetComponent <GroundEnemy>();
         if (gEnemy != null)
         {
             gEnemy.TakeDamage(damage);
         }
         else
         {
             FlyingEnemy fEnemy = col.GetComponent <FlyingEnemy>();
             if (fEnemy != null)
             {
                 fEnemy.TakeDamage(damage);
             }
         }
         Destroy(gameObject);
     }
 }
Exemple #9
0
    // Update is called once per frame
    void Update()
    {
        duration -= Time.deltaTime;
        if (duration <= 0)
        {
            Destroy(gameObject);
        }

        previousPosition = transform.position;
        transform.Translate(Vector3.forward * speed * Time.deltaTime);

        RaycastHit[] hits = Physics.RaycastAll(previousPosition, (transform.position - previousPosition).normalized, (transform.position - previousPosition).magnitude, GameManager.instance.player.shootLayerMask);
        for (int i = 0; i < hits.Length; i++)
        {
            LayerMask layer = hits[i].collider.gameObject.layer;
            //Debug.Log(hits[i].collider.name);
            if (layer == LayerMask.NameToLayer("Enemy"))
            {
                GroundEnemy gEnemy = hits[i].collider.GetComponent <GroundEnemy>();
                if (gEnemy != null)
                {
                    gEnemy.TakeDamage(damage);
                }
                else
                {
                    FlyingEnemy fEnemy = hits[i].collider.GetComponent <FlyingEnemy>();
                    if (fEnemy != null)
                    {
                        fEnemy.TakeDamage(damage);
                    }
                }
                Destroy(gameObject);
            }
            if (layer == LayerMask.NameToLayer("Geometry"))
            {
                Destroy(gameObject);
            }
        }
    }
Exemple #10
0
	public void _KillGroundEnemy(GroundEnemy _enemy)
	{
		// Let's play some sound
		//audioManager.PlaySound(_enemy.deathSoundName);

		// Gain some money
		//		Money += _enemy.moneyDrop;
		//		audioManager.PlaySound("Money");

		// Add particles
		Transform _clone = Instantiate(_enemy.deathParticles, _enemy.transform.position, Quaternion.identity) as Transform;


		    Destroy(_clone.gameObject, 5f);


		// Go camerashake
		cameraShake.Shake(_enemy.shakeAmt, _enemy.shakeLength);
		if (_enemy.transform.parent != null)
			Destroy (_enemy.transform.parent.gameObject);
		else
		Destroy(_enemy.gameObject);
	}
Exemple #11
0
 // Use this for initialization
 void Start()
 {
     StartCoroutine(Crawl());
     groundAI   = GetComponent <GroundEnemy> ();
     controller = GetComponent <Controller2D> ();
 }
Exemple #12
0
 public void Enter(GroundEnemy enemy)
 {
     this.enemy = enemy;
 }
Exemple #13
0
 public void Enter(GroundEnemy enemy)
 {
 }
Exemple #14
0
	public static void KillGroundEnemy(GroundEnemy enemy)
	{
		gm._KillGroundEnemy(enemy);
	}
Exemple #15
0
    public void Shoot()
    {
        switch (actualWeapon)
        {
        case Weapon.rifle:
            actualARShootCooldown = playerModel.shootARCooldown;
            GameObject bulletAR;
            RaycastHit hitAR;
            if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hitAR, Mathf.Infinity, shootLayerMask))
            {
                Vector3 dir = hitAR.point - bulletSpawner.transform.position;
                dir.Normalize();
                bulletAR = Instantiate(bulletARPrefab, bulletSpawner.transform.position, bulletSpawner.transform.rotation);
                bulletAR.transform.forward = dir;
                //bulletAR.GetComponent<Rigidbody>().AddForce(dir * playerModel.shootForceAR * bulletAR.GetComponent<Rigidbody>().mass, ForceMode.Impulse);
            }
            else
            {
                bulletAR = Instantiate(bulletARPrefab, bulletSpawner.transform.position, Camera.main.transform.rotation);
                //bulletAR.GetComponent<Rigidbody>().AddForce(bulletSpawner.transform.forward * playerModel.shootForceAR * bulletAR.GetComponent<Rigidbody>().mass, ForceMode.Impulse);
            }

            actualOverheat += playerModel.bulletOverheat;

            gc.uiController.ChangeAROverheat(actualOverheat);
            if (actualOverheat >= playerModel.maxOverheatAR)
            {
                actualOverheat = playerModel.maxOverheatAR;
                saturatedAR    = true;
            }
            break;

        case Weapon.shotgun:
            /*muzzleFlash.Play();
             * muzzleFlash.GetComponentInChildren<WFX_LightFlicker>().StartCoroutine("Flicker");*/

            for (int i = 0; i < pellets.Count; i++)
            {
                pellets[i] = Random.rotation;
                Quaternion rot = Quaternion.RotateTowards(bulletSpawner.transform.rotation, pellets[i], playerModel.shotgunSpreadAngle);
                RaycastHit hit;
                if (Physics.Raycast(Camera.main.transform.position, rot * Vector3.forward, out hit, playerModel.rangeShotgun, shootLayerMask))
                {
                    Debug.DrawRay(Camera.main.transform.position, rot * Vector3.forward, Color.red);

                    //GameObject impact = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
                    GameObject impactHoleGO = Instantiate(impactHole, new Vector3(hit.point.x, hit.point.y + 0.1f, hit.point.z), Quaternion.LookRotation(hit.normal));

                    impactHoleGO.transform.parent = hit.transform;

                    GroundEnemy gEnemy = hit.collider.GetComponent <GroundEnemy>();
                    if (gEnemy != null)
                    {
                        gEnemy.TakeDamage(playerModel.shotgunDamage);
                    }
                    else
                    {
                        FlyingEnemy fEnemy = hit.collider.GetComponent <FlyingEnemy>();
                        if (fEnemy != null)
                        {
                            fEnemy.TakeDamage(playerModel.shotgunDamage);
                        }
                    }

                    /*imitHoles.Add(impactHoleGO);
                     *
                     * if (limitHoles.Count == 25)
                     * {
                     *  Destroy(limitHoles[0]);
                     *  limitHoles.Remove(limitHoles[0]);
                     * }
                     *
                     * GameController.instance.destroyObjects.Add(impactHoleGO);*/

                    //Destroy(impact, 2f);
                    Destroy(impactHoleGO, 20f);
                }
                actualShotgunShootCooldown = playerModel.shootShotgunCooldown;
                shotgunShotted             = true;
            }
            break;

        case Weapon.launcher:
            GameObject grenade = Instantiate(grenadePrefab, bulletSpawner.transform.position, bulletSpawner.transform.rotation);
            grenade.GetComponent <Rigidbody>().AddForce(bulletSpawner.transform.forward * playerModel.shootForceLauncher * grenade.GetComponent <Rigidbody>().mass, ForceMode.VelocityChange);
            ChangeGrenadeAmmo();
            break;
        }
    }
Exemple #16
0
 void Start()
 {
     m_self     = GetComponentInParent <GroundEnemy>();
     m_animator = GetComponentInParent <Animator>();
     Player     = GameObject.Find("SUNman").transform;
 }
Exemple #17
0
 public void Enter(GroundEnemy enemy)
 {
     patrolDuration = UnityEngine.Random.Range(1, 10);
     this.enemy     = enemy;
 }
Exemple #18
0
 public void Enter(GroundEnemy enemy)
 {
     idleDuration = UnityEngine.Random.Range(1, 5);
     this.enemy   = enemy;
 }
Exemple #19
0
 // Use this for initialization
 void Start()
 {
     player      = FindObjectOfType <Player>();
     groundEnemy = FindObjectOfType <GroundEnemy>();
 }
    // Use this for initialization
    override protected void Start () {
        base.Start();

        enemyComponent = new GroundEnemy(2, 2, 0, 0, GetComponent<GroundEnemyController>(), 1);

	}