private void SetUp() { var Data = Entity.GetComponent <KnightData>(); TimeCount = 0; StateTime = Data.AttackTime; if (Context.CurrentAttackMode == KnightAttackMode.DoubleSecond || Context.CurrentAttackMode == KnightAttackMode.Chase) { Attack = GetAttackInfo(Data.DoubleAttackOffset, Data.DoubleAttackHitBoxSize); } else { Attack = GetAttackInfo(Data.SingleAttackOffset, Data.SingleAttackHitBoxSize); } AttackHit = false; if (Entity.transform.right.x > 0) { Entity.GetComponent <SpeedManager>().SelfSpeed.x = Data.AttackStepForwardSpeed; } else { Entity.GetComponent <SpeedManager>().SelfSpeed.x = -Data.AttackStepForwardSpeed; } }
public override void OnStart() { base.OnStart(); m_Timer = Time.timeSinceLevelLoad + Duration.Value; m_AttackPoint = m_AttackStart; m_AttackHit = false; AttackInfo = new EnemyAttackInfo(Owner.gameObject, Direction.Right, Damage.Value, Damage.Value, Vector2.zero, Vector2.zero); }
// enum debuff private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player") && !isBumpAttack) { EnemyAttackInfo attack = new EnemyAttackInfo(damage, 1f, 0, null, null); collision.gameObject.GetComponent <PlayerAttack>().TakeDamage(attack); } }
private void OnTriggerStay2D(Collider2D collision) { if (collision.CompareTag("Player") && isBumpAttack && !transform.parent.gameObject.GetComponent <EnemyAir>().bumped) { EnemyAttackInfo attack = new EnemyAttackInfo(damage, 1f, 0, null, null); collision.gameObject.GetComponent <PlayerAttack>().TakeDamage(attack); transform.parent.gameObject.GetComponent <EnemyAir>().bumped = true; } }
public override bool OnHit(AttackInfo Attack) { base.OnHit(Attack); CurrentTakenAttack = (EnemyAttackInfo)Attack; bool IsInvulnerable = Invulnerable(); EventManager.instance.Fire(new PlayerGetHit(CurrentTakenAttack, InRollInvulnerability)); if (!IsInvulnerable) { var Data = GetComponent <CharacterData>(); PowerSlashLoseIncrement(); SpiritMasterGainSeal(); UltimateAwakenGainSeal(); OneMindLoseIncrement(); CurrentEnergy = 0; GainLoseSeal(1); SetEnergyFull(false); SetAwaken(false); Interrupted = true; int Damage = CurrentTakenAttack.Damage; if (DamageText == null) { DamageText = (GameObject)Instantiate(Resources.Load("Prefabs/DamageText"), transform.localPosition, Quaternion.Euler(0, 0, 0)); } DamageText.GetComponent <DamageText>().ActivateSelf(Damage); DamageText.transform.SetParent(Canvas.transform); CurrentHP -= Damage; if (CurrentHP <= 0) { EventManager.instance.Fire(new PlayerDied()); //SceneManager.LoadScene(SceneManager.GetActiveScene().name); return(true); } else { return(false); } } return(false); }
public override void OnStart() { m_Timer = Time.timeSinceLevelLoad + Duration.Value; GetComponent <SpriteRenderer>().sprite = AttackSprite.Value; m_AttackHit = false; bool isRight = transform.eulerAngles.y == 0f; AttackInfo = new EnemyAttackInfo(Owner.gameObject, Direction.Right, Damage.Value, Damage.Value, HitBoxOffset.Value, HitBoxSize.Value); GetComponent <SpeedManager>().SelfSpeed.x = transform.right.x * ForwardStep.Value; }
void OnCollisionEnter2D(Collision2D coll) { if (coll.gameObject.layer == SpikeLayer) { Tilemap t = coll.gameObject.GetComponent <Tilemap>(); Vector3 hitPosition = Vector3.zero; ContactPoint2D hit = coll.contacts[0]; hitPosition.x = hit.point.x - 0.01f * hit.normal.x; hitPosition.y = hit.point.y - 0.01f * hit.normal.y; //충돌 위치 중심 계산 TileBase colTile = t.GetTile(t.WorldToCell(hitPosition)); if (colTile != null) { EnemyAttackInfo attack = new EnemyAttackInfo(spikeDamage, 0f, 0, null, null); //넉백은 따로 구현 GetComponent <PlayerAttack>().TakeDamage(attack); //방향에 따른 넉백 구현 foreach (TileBase tile in spikeTileu) { if (colTile == tile) //spike up tile { // print("uuch!"); rb.velocity = new Vector2(rb.velocity.x, spikeKnockBacky); } } foreach (TileBase tile in spikeTiled) { if (colTile == tile) //spike down tile { // print("duch!"); rb.velocity = new Vector2(rb.velocity.x, -spikeKnockBacky); } } foreach (TileBase tile in spikeTilel) { if (colTile == tile) //spike l tile { // print("luch!"); rb.velocity = new Vector2(-spikeKnockBackx, rb.velocity.y); } } foreach (TileBase tile in spikeTiler) { if (colTile == tile) //spike r tile { // print("ruch!"); rb.velocity = new Vector2(spikeKnockBackx, rb.velocity.y); } } } } }
private void SetUp() { var Data = Entity.GetComponent <SoulWarriorData>(); TimeCount = 0; StateTime = Data.MagicStrikeTime; MagicAttack = GetMagicInfo(); Magic = GameObject.Instantiate(Data.Magic, Context.MagicPos, Quaternion.Euler(0, 0, 0)); AttackHit = false; }
public override void OnStart() { base.OnStart(); m_Timer = Time.timeSinceLevelLoad + Duration.Value; m_StartPosition = (Vector2)Owner.transform.position + StartOffset.Value; m_EnemyAttackInfo = new EnemyAttackInfo(Owner.gameObject, Direction.Right, Damage.Value, Damage.Value, Vector2.zero, HitBoxSize.Value); m_WaveObject = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs/Wave")); GameObject.Destroy(m_WaveObject, Duration.Value); m_WaveObject.transform.position = m_StartPosition; m_WaveObject.GetComponent <SpriteRenderer>().size = HitBoxSize.Value; m_Hit = false; }
private void SetUp() { var Data = Entity.GetComponent <SoulWarriorData>(); TimeCount = 0; StateTime = Data.SlashStrikeTime; Attack = GetSlashInfo(); AttackHit = false; if (Entity.transform.right.x > 0) { Entity.GetComponent <SpeedManager>().SelfSpeed.x = Data.AttackStepForwardSpeed; } else { Entity.GetComponent <SpeedManager>().SelfSpeed.x = -Data.AttackStepForwardSpeed; } }
private void m_ExplodePlayerToHit() { if (!m_HitOnce) { Collider2D hit = Physics2D.OverlapCircle(transform.position, 0.5f, PlayerLayer); if (hit != null) { // Hit Player bool isRight = transform.position.x < hit.gameObject.transform.position.x; EnemyAttackInfo attackInfo = new EnemyAttackInfo(Owner, isRight ? Direction.Right : Direction.Left, Damage, Damage, BladeHitBoxSize, BladeHitBoxOffset); hit.gameObject.GetComponent <IHittable>().OnHit(attackInfo); m_HitOnce = true; } } }
/* void FixedUpdate() * { * Vector2 dir = rb.transform.position; * float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; * transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); * }*/ private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")) { EnemyAttackInfo attack = new EnemyAttackInfo(damage, knockBackMultiplier, 0, null, null); collision.gameObject.GetComponent <PlayerAttack>().TakeDamage(attack); } if ((vanishLayer == (vanishLayer | 1 << collision.gameObject.layer))) { Destroy(gameObject); } if (stopLayer == (stopLayer | 1 << collision.gameObject.layer)) { GetComponent <Rigidbody2D>().velocity = Vector2.zero; GetComponent <Collider2D>().enabled = false; StartCoroutine(WaitVanish(10f)); } }
private bool HitPlayer(EnemyAttackInfo Attack) { Vector2 AttackMiddlePoint = (m_AttackStart + m_AttackPoint) / 2f; float distance = Vector2.Distance(m_AttackStart, m_AttackPoint); float angle = Vector2.Angle(Vector2.right, m_AttackPoint - m_AttackStart); RaycastHit2D Hit = Physics2D.BoxCast(AttackMiddlePoint, new Vector2(distance, HitboxHeight.Value), angle, transform.right, 0, PlayerLayer); if (Hit) { Attack.Dir = Direction.Right; if (AIUtility.GetXDiff(Hit.collider.gameObject, gameObject) < 0) { Attack.Dir = Direction.Left; } Hit.collider.gameObject.GetComponent <IHittable>().OnHit(Attack); return(true); } else { return(false); } }
public static bool HitPlayer(Vector2 Pivot, EnemyAttackInfo Attack, LayerMask PlayerLayer) { Vector2 Offset = Attack.HitBoxOffset; Vector2 Direction = Vector2.right; if (Attack.Dir == global::Direction.Left) { Offset.x = -Offset.x; Direction = Vector2.left; } RaycastHit2D Hit = Physics2D.BoxCast(Pivot + Offset, Attack.HitBoxSize, 0, Direction, 0, PlayerLayer); if (Hit) { Hit.collider.gameObject.GetComponent <IHittable>().OnHit(Attack); return(true); } else { return(false); } }
private bool HitPlayer(EnemyAttackInfo Attack) { Vector2 Offset = Attack.HitBoxOffset; Offset.x = transform.right.x * Offset.x; RaycastHit2D Hit = Physics2D.BoxCast(m_StartPosition, Attack.HitBoxSize, 0, transform.right, 0, PlayerLayer); if (Hit) { Attack.Dir = Direction.Right; if (AIUtility.GetXDiff(Hit.collider.gameObject, Owner.gameObject) > 0) { Attack.Dir = Direction.Left; } Hit.collider.gameObject.GetComponent <IHittable>().OnHit(Attack); return(true); } else { return(false); } }
public void TakeDamage(EnemyAttackInfo attack) { lifeStoneManager.DestroyStone((int)Mathf.Ceil(attack.damage)); }
public PlayerGetHit(EnemyAttackInfo attack, bool inroll) { EnemyAttack = attack; PlayerInRollInvulnerability = inroll; }