Beispiel #1
0
 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));
         }
     }
 }
Beispiel #2
0
 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);
         }
     }
 }
Beispiel #3
0
 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);
 }
Beispiel #4
0
 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();
 }