public override void TakeDamage(Transform thingThatHitYou, float pushTime, float pushForce, float damage, bool display = true) { EnableEnemyStateUI(); if (pushTime > 0) { EnemyState.MovementState = CharacterMovementState.Stunned; } LoseHealth(damage, display); if (transform.gameObject.activeInHierarchy) { if (thingThatHitYou && pushForce > 0) { Vector2 difference = transform.position - thingThatHitYou.position; difference = difference.normalized * pushForce * (1 - SlowTimeCoefficient); body.AddForce(difference, ForceMode2D.Impulse); } if (BlinkOnHit) { BlinkOnHit.Blink(spriteRenderer); } if (animator && animator.parameters.Any(c => c.name == "Hit")) { animator.SetTrigger("Hit"); } if (pushTime > 0) { StartCoroutine(Knockback(body, pushTime)); } } }
void Initialize() { if (string.IsNullOrWhiteSpace(Data.EnemyId)) { Data.EnemyId = Guid.NewGuid().ToString(); gameObject.SetActive(Data.IsAliveDefaultValue); } target = PermanentObjects.Instance.Player.transform; EnemyHealth = GetComponent <CharacterHealth>(); EnemyHealth.Initialize(); EnemyState = GetComponent <CharacterState>(); //EnemyHealth.Health.CurrentHealth = EnemyHealth.Health.MaxHealth; body = GetComponent <Rigidbody2D>(); animator = GetComponent <Animator>(); spriteRenderer = GetComponent <SpriteRenderer>(); BlinkOnHit = GetComponent <BlinkOnHit>(); EnemyState.MovementState = CharacterMovementState.Idle; if (!Data.IsAlive) { if (Data.LeaveBody) { transform.position = Data.BodyPosition; EnemyHealth.LoseHealth(EnemyHealth.Health.CurrentHealth, false); } else { gameObject.SetActive(Data.IsAlive); } } }
public override void OnStart(GameObject target) { characterHealth = target.GetComponent <IHasHealth>(); characterState = target.GetComponent <CharacterState>(); spriteRenderer = target.GetComponent <SpriteRenderer>(); blinkOnHit = target.GetComponent <BlinkOnHit>(); blinkOnHit.SetRegularColor((Config as PoisonConfig).PoisonedEnemyColor); spriteRenderer.color = (Config as PoisonConfig).PoisonedEnemyColor; characterState.AddStatusEffect(this); }
void Awake() { defaultSpeed = MoveSpeed; PlayerState = GetComponent <CharacterState>(); PlayerInput = GetComponent <PlayerInput>(); PlayerInput.OnAttack += Attack; PlayerInput.OnCastSpell += CastSpell; PlayerInput.OnJump += Jump; animator = GetComponent <Animator>(); rigidBody = GetComponent <Rigidbody2D>(); lightMask = GetComponent <SpriteMask>(); playerSpriteRenderer = GetComponent <SpriteRenderer>(); PlayerHealth = GetComponent <CharacterHealth>(); PlayerHealth.Initialize(); PlayerMana = GetComponent <CharacterMana>(); PlayerUltimate = GetComponent <CharacterUltimate>(); animator.SetFloat("MoveX", 0); animator.SetFloat("MoveY", -1); //transform.position = StartingPosition.InitialValue; blinkOnHit = GetComponent <BlinkOnHit>(); LoadData(); }