public override void Hit(HitInformation hitInformation) { base.Hit(hitInformation); if(!gameObject.activeInHierarchy) return; if (pushRoutine != null) { StopCoroutine(pushRoutine); pushRoutine = null; } pushRoutine = StartCoroutine(PushBackRoutine(hitInformation)); }
protected void ApplyEffect(IHitByBullet[] affectedObjects, Vector3 point) { for (int i = 0; i < affectedObjects.Length; i++) { IHitByBullet affectedObject = affectedObjects[i]; HitInformation hitInfo = new HitInformation { Weapon = baseWeapon, Bullet = this, Shooter = baseWeapon.Owner, HitPosition = point }; affectedObject.Hit(hitInfo); } }
protected void ApplyEffect(IHitByBullet[] affectedObjects, Vector3 point) { for (int i = 0; i < affectedObjects.Length; i++) { IHitByBullet affectedObject = affectedObjects[i]; HitInformation hitInfo = new HitInformation { Weapon = baseWeapon, Bullet = this, Shooter = baseWeapon.Owner, HitPosition = point }; affectedObject.Hit(hitInfo); } }
private void OnEnemyDied(HitInformation hitInformation) { AddScore(ENEMY_SCORE); }
private IEnumerator PushBackRoutine(HitInformation hitInformation) { Vector3 direction = hitInformation.HitPosition - hitInformation.Shooter.transform.position; rigidbody.isKinematic = false; rigidbody.AddForce(direction.normalized* 30, ForceMode.Impulse); yield return new WaitForSeconds(0.05f); rigidbody.isKinematic = true; }
public virtual void Hit(HitInformation hitInformation) { lastHitInformation = hitInformation; attributePool.GetAttribute(AttributeType.Health) .ChangeValue(-lastHitInformation.Weapon.GetWeaponDefinition().GetDamage()); }