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); }
//碰撞后处理阻挡的委托 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>()); } }
//达到阻挡数上线后,让物理引擎忽视该刚体 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; } }
// 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; } }
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; } }
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); } }
// 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); } } }
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); }
// Use this for initialization void Start() { StartCoroutine(Crawl()); groundAI = GetComponent <GroundEnemy> (); controller = GetComponent <Controller2D> (); }
public void Enter(GroundEnemy enemy) { this.enemy = enemy; }
public void Enter(GroundEnemy enemy) { }
public static void KillGroundEnemy(GroundEnemy enemy) { gm._KillGroundEnemy(enemy); }
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; } }
void Start() { m_self = GetComponentInParent <GroundEnemy>(); m_animator = GetComponentInParent <Animator>(); Player = GameObject.Find("SUNman").transform; }
public void Enter(GroundEnemy enemy) { patrolDuration = UnityEngine.Random.Range(1, 10); this.enemy = enemy; }
public void Enter(GroundEnemy enemy) { idleDuration = UnityEngine.Random.Range(1, 5); this.enemy = enemy; }
// 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); }