/// <summary> /// Ons the trigger enter2 d. /// </summary> /// <param name="collision">Collision.</param> protected override void OnTriggerEnter2D(Collider2D collision) { // In respawn mode, don't interact if (respawning) { return; } // If collision was with an enemy EnemyBase enemyPlane = collision.GetComponent <EnemyBase>(); if (enemyPlane != null) { Damage(); enemyPlane.Damage(); } // If collision was with a projectile Projectile shoot = collision.GetComponent <Projectile>(); if (shoot != null) { // Return projectile to pool collision.gameObject.SetActive(false); Damage(shoot.damage); } }
private void OnParticleCollision(GameObject other) { EnemyBase enemy = other.GetComponentInParent <EnemyBase>(); if (!enemy) { return; } enemy.Damage(turret ? turret.damage : damage); }
void OnTriggerEnter2D(Collider2D collider) { if (collider.gameObject.tag == "Enemy") { //collider.gameObject.name = "hit_enemy"; //Debug.Log(collider.gameObject.name); EnemyBase enemy = collider.gameObject.GetComponent <EnemyBase>(); if (attacked_enemy_list.Contains(enemy) == false) { enemy.Damage(m_iAttack, m_strAttribute, m_iCount); m_iCount += 1; attacked_enemy_list.Add(enemy); } } }
protected virtual void OnTriggerEnter(Collider collision) { if (collision.gameObject.GetComponent <EnemyBase>() != null) { EnemyBase enemy = collision.gameObject.GetComponent <EnemyBase>(); if (hitSound != null) { AudioManager.instance.PlayAudio(hitSound); } enemy.Damage(damage); Destroy(gameObject); } else if (collision.gameObject.tag == "Map") { Destroy(gameObject); } }
IEnumerator Ult3() { StartCoroutine(CanAttack(10f)); GameObject lazer = Instantiate(spawnObject, gameObject.transform.position, Quaternion.identity); SpriteRenderer lazerSize = lazer.GetComponent <SpriteRenderer>(); BoxCollider2D lazerCollider = lazer.GetComponent <BoxCollider2D>(); if (!faceRight) { Vector3 theScale = lazer.transform.localScale; theScale.x *= -1; lazer.transform.localScale = theScale; } float elapsed = 0.0f; float duration = 0.3f; while (elapsed < duration) { lazerSize.size = new Vector2(Mathf.Lerp(0.1f, 20, elapsed / duration), 2); lazerCollider.size = lazerSize.size; lazerCollider.offset = new Vector2(lazerSize.size.x / 2, 0); elapsed += Time.deltaTime; yield return(null); } Collider2D[] enemies = Physics2D.OverlapBoxAll(lazerCollider.bounds.center, lazerCollider.bounds.size, 0f, isEnemy); foreach (Collider2D enemy in enemies) { EnemyBase enemyBase = enemy.GetComponent <EnemyBase>(); if (!enemyBase) { continue; } enemyBase.Damage(GameMaster.GM.items.weaponDatas[weaponID].weaponDamage * 10 * ultModifier, 60, GameMaster.GM.items.weaponDatas[weaponID].knockBack); if (enemyBase.health < 0) { player.Damage(-1); } } Destroy(lazer); }
/// <summary> /// 衝突判定 /// </summary> /// <param name="target"></param> void OnTriggerEnter(Collider target) { if (target.gameObject.layer != Layer.Enemy) { return; } EnemyBase enemyBase = target.GetComponent <EnemyBase>(); if (enemyBase == null) { return; } enemyBase.Damage(power); if (IsForgiveDestroy()) { Destroy(gameObject); } }
private void FixedUpdate() { destroyTimer += Time.fixedDeltaTime; if (destroyTimer > lifeTime) { Destroy(gameObject); } transform.Translate(flySpeed * transform.right * directRight * Time.fixedDeltaTime); Collider2D[] currentCollisions = Physics2D.OverlapBoxAll(weaponCollider.bounds.center, weaponCollider.bounds.size, 0f, isEnemy); foreach (Collider2D doDamage in currentCollisions) { EnemyBase enemy = doDamage.GetComponent <EnemyBase>(); if (enemy) { enemy.Damage(damage, 0, 0); } Destroy(gameObject); } }
private void Detonate() { detonated = true; target.Damage(1); Destroy(gameObject); }
// Update is called once per frame void Update() { Vector3 moveVector = new Vector3(transform.position.x - targetPosition.x, transform.position.y - targetPosition.y, transform.position.z - targetPosition.z).normalized; // update the position transform.position = new Vector3(transform.position.x - moveVector.x * Speed * Time.deltaTime, transform.position.y - moveVector.y * Speed * Time.deltaTime, transform.position.z - moveVector.z * Speed * Time.deltaTime); distance += Time.deltaTime * Speed; if (distance > range || Vector3.Distance(transform.position, new Vector3(targetPosition.x, targetPosition.y, targetPosition.z)) < 1) { Destroy(gameObject); if (target != null) { if (Slow > 0) { target.Slow(Slow, SlowDuration, (int)Owner.TurretType); } target.Damage(Damage, (int)Owner.TurretType); if (DamageOverTime > 0) { if (Owner.TurretType == TurretType.EarthTurret) { } else if (Owner.TurretType == TurretType.FireTurret) { target.DamageOverTime(DamageOverTime, 3.0f, .5f, EnemyState.Burn, (int)Owner.TurretType); } else if (Owner.TurretType == TurretType.StormTurret) { } else if (Owner.TurretType == TurretType.VoodooTurret) { target.DamageOverTime(DamageOverTime, 3.0f, .5f, EnemyState.Poison, (int)Owner.TurretType); } } if (Owner.MindControlDuration > 0) { target.MindControl(Owner.MindControlDuration, (int)Owner.TurretType); } if (AoeDamage > 0 && AoeRange > 0) { foreach (EnemyBase enemy in objectManager.enemies) { Vector3 temp1 = new Vector3(targetPosition.x, enemy.transform.position.y, targetPosition.z); if (Vector3.Distance(temp1, enemy.transform.position) < AoeRange) { var enemyTargetPosition = enemy.transform.position; GameObject projectileObject = Instantiate(Owner.projectileType, targetPosition, Quaternion.LookRotation(enemyTargetPosition)) as GameObject; Projectile projectile = projectileObject.GetComponent <Projectile>(); projectile.Damage = AoeDamage; projectile.target = enemy; projectile.targetPosition = enemyTargetPosition; projectile.Owner = this.Owner; projectile.DamageOverTime = DamageOverTime; } } } } } }