/// <summary> /// Heal all targets in radius. /// </summary> private bool Heal() { bool res = false; // Searching for units Collider2D[] cols = Physics2D.OverlapCircleAll(transform.position, radius.radius * transform.localScale.x); foreach (Collider2D col in cols) { if (IsTagAllowed(col.tag) == true) { // If it has Damege Taker component DamageTaker target = col.gameObject.GetComponent <DamageTaker>(); if (target != null) { // If target injured if (target.currentHitpoints < target.hitpoints) { res = true; target.TakeDamage(-healAmount); if (healVisualPrefab != null) { // Create visual healing effect on target GameObject effect = Instantiate(healVisualPrefab, target.transform); // And destroy it after specified timeout Destroy(effect, healVisualDuration); } } } } } return(res); }
/// <summary> /// Raises the destroy event. /// </summary> void OnDestroy() { // If scene is in progress if (isQuitting == false) { // Find all colliders in specified radius Collider2D[] cols = Physics2D.OverlapCircleAll(transform.position, radius); foreach (Collider2D col in cols) { if (IsTagAllowed(col.tag) == true) { // If target can receive damage DamageTaker damageTaker = col.gameObject.GetComponent <DamageTaker>(); if (damageTaker != null) { // Target takes damage equal bullet damage * AOE Damage Rate damageTaker.TakeDamage((int)(Mathf.Ceil(aoeDamageRate * (float)bullet.GetDamage()))); } } } if (explosion != null) { // Create explosion visual effect Destroy(Instantiate <GameObject>(explosion, transform.position, transform.rotation), explosionDuration); } if (sfx != null && AudioManager.instance != null) { // Play sfx AudioManager.instance.PlaySound(sfx); } } }
private void BounceOnDownHit(DamageDealer dealer, DamageTaker taker) { if (((MeleeDamageDealer)dealer).HitDirection == Vector2.down) { this.controller.Velocity.y = Mathf.Sqrt(2f * this.meleeBounceHeight * this.gravity); } }
/// <summary> /// Raises the destroy event. /// </summary> void OnDestroy() { // If scene is in progress if (isQuitting == false) { // Find all colliders in specified radius Collider2D[] cols = Physics2D.OverlapCircleAll(transform.position, radius); foreach (Collider2D col in cols) { // If collision allowed by scene if (LevelManager.IsCollisionValid(gameObject.tag, col.gameObject.tag) == true) { // If target can receive damage DamageTaker damageTaker = col.gameObject.GetComponent <DamageTaker>(); if (damageTaker != null) { damageTaker.TakeDamage(damage); } } } if (explosion != null) { // Create explosion visual effect Destroy(Instantiate <GameObject>(explosion, transform.position, transform.rotation), explosionDuration); } } }
void Awake() { damageTaker = GetComponent<DamageTaker>(); enemyMotion = GetComponent<EnemyMotion>(); enemySprite = enemyMotion.GetComponent<SpriteRenderer>(); enemyTransform = enemyMotion.spriteTransform; }
/// <summary> /// Start this instance. /// </summary> void Start() { DefendersSpawner defendersSpawner = tower.GetComponent <DefendersSpawner>(); if (defendersSpawner != null) { // Get all active defenders foreach (GameObject defender in defendersSpawner.defPoint.GetDefenderList()) { DamageTaker damageTaker = defender.GetComponent <DamageTaker>(); // Heal it damageTaker.TakeDamage(-damageTaker.hitpoints); if (healFxPrefab != null) { // Create heal visual effect Destroy(Instantiate(healFxPrefab, defender.transform), fxDuration); } } } else { Debug.Log("This tower can not use heal skills"); } Destroy(gameObject); }
private IEnumerator FireCoroutine(Transform target) { if (target != null) { if (anim != null && anim.runtimeAnimatorController != null) { foreach (AnimationClip clip in anim.runtimeAnimatorController.animationClips) { if (clip.name == "Attack") { anim.SetTrigger("attack"); break; } } } yield return(new WaitForSeconds(fireDelay)); if (target != null) { DamageTaker damageTaker = target.GetComponent <DamageTaker>(); if (damageTaker != null) { damageTaker.TakeDamage(damage); } if (sfx != null && AudioManager.instance != null) { AudioManager.instance.PlayAttack(sfx); } } } }
/// <summary> /// Make damage specified by delays and amount. /// </summary> /// <returns>The coroutine.</returns> private IEnumerator DamageCoroutine() { foreach (float delay in delaysBeforeDamage) { yield return(new WaitForSeconds(delay)); // Search for targets Collider2D[] hits = Physics2D.OverlapCircleAll(transform.position, radius); foreach (Collider2D col in hits) { if (col.CompareTag("Enemy") == true || col.CompareTag("FlyingEnemy") == true) { DamageTaker damageTaker = col.GetComponent <DamageTaker>(); if (damageTaker != null) { damageTaker.TakeDamage(damage); } } } if (sfx != null && AudioManager.instance != null) { // Play sound effect AudioManager.instance.PlaySound(sfx); } } Destroy(gameObject); }
void Start() { rb = GetComponent <Rigidbody>(); horizMovement = GetComponent <PlayerHorizMovement>(); playerDamageTaker = GetComponent <DamageTaker>(); battleController = GameObject.Find("*BATTLE CONTROLLER*").GetComponent <BattleController>(); storedPosition = transform.position; }
//显示治疗效果 private void ShowHealVisual(DamageTaker target) { if (healVisual != null) { GameObject effect = Instantiate(healVisual, target.transform); Destroy(effect, healVisualDuration); } }
public void DamageTo(DamageTaker tar) { tar.TakeDamage(this, damage, tr.position); if (OnGiveDamage != null) { OnGiveDamage(tar, damage, tr.position); } }
//穿过物体造成伤害 void OnTriggerEnter2D(Collider2D other) { DamageTaker damageTaker = other.GetComponent <DamageTaker>(); if (damageTaker != null) { damageTaker.TakeDamage(damage); } }
public void OnDamage(DamageDealer dealer, DamageTaker taker) { float newHealth = this.numHearts - dealer.Damage; while (this.numHearts > 0 && this.numHearts > newHealth) { this.hearts[--this.numHearts].enabled = false; } }
private void OnTriggerEnter2D(Collider2D collision) { DamageTaker damageTaker = collision.gameObject.GetComponent <DamageTaker>(); if (damageTaker) { damageTaker.TakeDamage(damage); } }
/// <summary> /// Damage targets on trigger enter /// </summary> /// <param name="other">Other.</param> void OnTriggerEnter2D(Collider2D other) { // If target can receive damage DamageTaker damageTaker = other.GetComponent <DamageTaker> (); if (damageTaker != null) { damageTaker.TakeDamage(damage); } }
private void Flash(DamageDealer dealer, DamageTaker taker) { this.material.SetFloat(flashAmountId, this.maxFlashAmount); this.material.SetColor(flashColorId, this.flashColor); if (this.useInvulnerabilityDuration) { this.duration = this.taker.InvulnerabilityDuration; } this.StartCoroutine(this.UpdateFlash()); }
private void OnDeath(DamageDealer dealer, DamageTaker taker) { this.sprite.enabled = false; this.GetComponent <FlashOnHit>().enabled = false; this.gameObject.SetActive(false); GameObject death = Instantiate(this.deathPrefab); death.transform.position = this.transform.position; GameManager.LevelManager.StartCoroutine(this.Death(death)); }
private void OnDamageHit(DamageDealer dealer, DamageTaker taker) { if (this.state == State.Fired) { this.ChangeState(State.HitDamageTaker); // TODO: do something (e.g. animation) between hit and destroy states. // For now, immediately change to destroy state: this.ChangeState(State.ToBeDestroyed); } }
public virtual void OnGiveDamage(DamageTaker taker, float damage, Vector2 dealPoint) { base.OnGiveDamage(taker, damage, dealPoint); UnitComponent target = taker.GetComponent <UnitComponent>(); if (target) { target.AddVelocity("hitted", (target.GetPosition() - (Vector2)tr.position).normalized * 3f, 0.5f, true); } OnDie(); }
public override void OnInit() { base.OnInit(); GetComponentInChildren <DamageDealer>().Init(OnGiveDamage); DamageTaker damageTaker = GetComponentInChildren <DamageTaker>(); if (damageTaker) { damageTaker.Init(OnTakeDamage); } }
public void OnPlayerDie(DamageDealer dealer, DamageTaker taker) { this.DisableInput(); this.sprite.enabled = false; this.GetComponent <FlashOnHit>().enabled = false; this.SafeDisable(); //this.gameObject.SetActive(false); GameObject death = Instantiate(this.vfx.deathPrefab); death.transform.position = this.transform.position; GameManager.LevelManager.StartCoroutine(this.Death(death)); }
/// <summary> /// Damage targets on trigger enter /// </summary> /// <param name="other">Other.</param> void OnTriggerEnter2D(Collider2D other) { if (IsTagAllowed(other.tag) == true) { // If target can receive damage DamageTaker damageTaker = other.GetComponent <DamageTaker> (); if (damageTaker != null) { damageTaker.TakeDamage(damage); } } }
private void ApplyAllDamageAB() { Collider closestCol = null; float minDist = float.PositiveInfinity; float dist; int id = Random.Range(int.MinValue, int.MaxValue); // find the closest collider (and the extraDamage ones) foreach (KeyValuePair <Collider, Vector3> pair in encounteredCols) { if (pair.Key != null) { // Extra damage: deal damage DamageTaker dt = pair.Key.GetComponent <DamageTaker>(); if (dt != null && dt.extraDmg) { ApplyDamageAB(pair.Key, pair.Value, id); } else { dist = (pair.Key.ClosestPoint(pair.Value) - pair.Value).magnitude; if (dist < minDist) { minDist = dist; closestCol = pair.Key; } } } } if (closestCol != null) { DamageTaker dt = closestCol.GetComponent <DamageTaker>(); if (dt.bouncing) { // Stun character playerMotor.psm.ApplyCrowdControl( new CrowdControl(CrowdControlType.Stun, DamageType.Self, DamageElement.None), STUN_DURATION ); // effect dt.TakeDamage(new Damage(DAMAGE_AB, DamageType.Melee, DamageElement.Light, playerMotor.transform.position), playerMotor, playerMotor.transform.position, id); } else { ApplyDamageAB(closestCol, encounteredCols[closestCol], id); } } }
/// <summary> /// Damage targets on trigger enter /// </summary> /// <param name="other">Other.</param> void OnTriggerEnter2D(Collider2D other) { // If collision allowed by scene if (LevelManager.IsCollisionValid(gameObject.tag, other.gameObject.tag) == true) { // If target can receive damage DamageTaker damageTaker = other.GetComponent <DamageTaker> (); if (damageTaker != null) { damageTaker.TakeDamage(damage); } } }
void OnTriggerEnter2D(Collider2D collid) { if (collid.gameObject.layer == LayerMask.NameToLayer("ground")) { Destroy(gameObject); } else if (collid.gameObject.tag != gameObject.tag) { DamageTaker dt = collid.GetComponentInParent <DamageTaker>(); dt.TakeDamage(2, 50); Destroy(gameObject); } }
public void OnEnemyDie(DamageDealer dealer, DamageTaker taker) { // TODO: Play death before return EnemyTracker tracker = taker.GetComponent <EnemyTracker>(); this.roomDifficulty -= tracker.difficulty; this.enemyCount--; GenericItem death = this.silhouettes.Pop(tracker.transform.position); death.instance.GetComponent <SpriteRenderer>().sprite = tracker.GetComponent <SpriteRenderer>().sprite; this.level.StartCoroutine(DoDeath(death)); tracker.Return(); }
//尝试治愈 private void TryToHeal(DamageTaker target) { if (coolDownCounter >= coolDown) { coolDownCounter = 0f; target.TakeDamage(-healAmount); if (healVisual != null) { GameObject effect = Instantiate(healVisual, target.transform); Destroy(effect, healVisualDuration); } } }
void DoDamage(GameObject other) { DamageTaker damaged = other.GetComponent <DamageTaker>(); if (damaged && damaged.alignment != alignment) { damaged.TakeDamage(damage, gameObject); } if (destroyOnImpact) { Destroy(gameObject); } }
void OnTriggerEnter(Collider other) { /////////////////DEALING DAMAGE TO AN ENEMY///////////////////////////////////////////////////////////////////////////////////// if (other.gameObject.CompareTag("Enemy")) { GameObject enemy = other.transform.parent.gameObject; while (enemy.GetComponent <IsEnemyCentral>() == null) { enemy = enemy.transform.parent.gameObject; } if (GameModeHandler.gamemode == GameModeHandler.GameMode.Battle) { float damage = GetDamageToEnemy(); DamageTaker damageTaker = enemy.GetComponent <DamageTaker>(); damageTaker.TakeDamage(damage); } else { BattleInfo battleInfo = enemy.GetComponent <BattleInfo>(); battleController.InitiateBattle(enemy, battleInfo); } } /////////////////DEALING DAMAGE TO A PUNCHING BAG///////////////////////////////////////////////////////////////////////////////////// if (other.gameObject.CompareTag("PunchingBag")) { GameObject enemy = other.transform.parent.gameObject; while (enemy.GetComponent <DamageTaker>() == null) { enemy = enemy.transform.parent.gameObject; } //todo change how a punching bag takes damage? float damage = GetDamageToEnemy(); DamageTaker damageTaker = enemy.GetComponent <DamageTaker>(); damageTaker.TakeDamage(damage); } /////////////////TAKING DAMAGE FROM A HAZARD (TRIGGER) ///////////////////////////////////////////////////////////////////////////////////// HazardData hazardInfo = other.gameObject.GetComponent <HazardData>(); //GETTING HIT BY A HAZARD if (hazardInfo != null && hazardInfo.enabled) { playerDamageTaker.TakeDamage(hazardInfo.damageToPlayer); } }
//获取治疗对象 void OnTriggerStay2D(Collider2D other) { if (IsTagAllowed(other.tag) == true) { DamageTaker target = other.gameObject.GetComponent <DamageTaker>(); if (target != null) { //判断对象是否需要治疗 if (target.currentHitPoint < target.hitPoint) { TryToHeal(target); } } } }
private void Hack(Transform target) { if (target != null) { DamageTaker damageTaker = target.GetComponent <DamageTaker>(); if (damageTaker != null) { damageTaker.TakeDamage(damage); } if (_animator != null) { _animator.SetTrigger("attackMelee"); } } }
//private LineRenderer lineRenderer; // Use this for initialization void Start() { //lineRenderer = GetComponent<LineRenderer> (); //lineRenderer.SetVertexCount (laserNumSegments); //lineRenderer.SetPosition (0, Vector3.zero); GameObject newGun = (GameObject)Instantiate (gun, Vector3.zero, Quaternion.identity); newGun.transform.parent = transform; newGun.transform.localPosition = Vector3.zero; newGun.transform.localRotation = Quaternion.identity; laserGun = newGun.GetComponent<LaserGun> (); damageTaker = GetComponent<DamageTaker> (); cameraTracker = Camera.main.GetComponent<CameraTracker> (); gameRules = Camera.main.GetComponent<GameRules> (); }
void Awake() { damageDealer = GetComponent<DamageDealer>(); damageTaker = GetComponent<DamageTaker>(); enemyAnimator = GetComponent<EnemyAnimator>(); }
void Awake() { damageDealer = GetComponent<DamageDealer>(); damageTaker = GetComponent<DamageTaker>(); audioSource = GetComponent<AudioSource>(); }
void SuspendMotion(DamageTaker dmgTaker) { SuspendMotion(); }
void StartFuse(DamageTaker dmgTaker) { StartFuse(); }
// Use this for initialization public override void Start () { base.Start (); gameObjectRenderer = GetComponent<Renderer> (); damageTaker = GetComponent<DamageTaker> (); }