private void MagicAttack() { if (_actionTimer > 2) { _actualAction = MinotaurAction.Idle; } if (_magicDelayTimer > _magicDelay) { _magicDelayTimer = 0; if (_magicDirecion) { NewProjectile2(_magicProjectiles[0].gameObject, new Vector2(0, 0.2f), Vector2.up * _bulletVelocityFactor); NewProjectile2(_magicProjectiles[1].gameObject, new Vector2(0.2f, 0), Vector2.right * _bulletVelocityFactor); NewProjectile2(_magicProjectiles[2].gameObject, new Vector2(-0.2f, 0), Vector2.left * _bulletVelocityFactor); NewProjectile2(_magicProjectiles[3].gameObject, new Vector2(0, -0.2f), Vector2.down * _bulletVelocityFactor); } else { NewProjectile2(_magicProjectiles[0].gameObject, new Vector2(0, 0.2f), (Vector2.up + Vector2.right) * _bulletVelocityFactor); NewProjectile2(_magicProjectiles[1].gameObject, new Vector2(0.2f, 0), (Vector2.down + Vector2.right) * _bulletVelocityFactor); NewProjectile2(_magicProjectiles[2].gameObject, new Vector2(-0.2f, 0), (Vector2.up + Vector2.left) * _bulletVelocityFactor); NewProjectile2(_magicProjectiles[3].gameObject, new Vector2(0, -0.2f), (Vector2.down + Vector2.left) * _bulletVelocityFactor); } _magicDirecion = !_magicDirecion; } }
public override void Attack() { _Anim.SetBool("Attacking", true); if (_meleePerformed) { _Anim.SetBool("Stunned", true); _Anim.SetBool("Walking", false); _Anim.SetBool("Attacking", false); _readyToAttack = false; _status = Status.Stunned; _ccEffectTimer = 1.5f; _actualAction = MinotaurAction.Idle; } }
private void SpawnMinions() { if (_actionTimer >= 1.0f) { _actualAction = MinotaurAction.Idle; _minionsSpawned = false; return; } if (!_minionsSpawned) { _minionsSpawned = true; var m1 = Instantiate(_minion); m1.transform.position = new Vector2(this.transform.position.x + 0.5f, this.transform.position.y); var m2 = Instantiate(_minion); m2.transform.position = new Vector2(this.transform.position.x - 0.5f, this.transform.position.y); } }
public override void FixedUpdate() { UpdateTimers(); CheckPersonalStatus(); if (_status == Status.Stunned) { return; } else { _Anim.SetBool("Stunned", false); } if (_actualAction == MinotaurAction.Idle) { _actualAction = (MinotaurAction)RandomNumber(1, 2); _actionTimer = 0; } switch (_actualAction) { case MinotaurAction.Melee: Chase(); break; case MinotaurAction.Magic: MagicAttack(); break; //case MinotaurAction.Rocks: // break; case MinotaurAction.Minions: SpawnMinions(); break; } }
public override void Chase() { if (_actionTimer > 7.0f) { _actualAction = MinotaurAction.Idle; _Anim.SetBool("Walking", false); _Rig2D.velocity = Vector2.zero; return; } float distanceR; float distanceL; float distance = float.MaxValue; if (_player != null) { distanceR = WhereIsATarget(_targetToAttack.position + _meleeOffsetR, true); distanceL = WhereIsATarget(_targetToAttack.position + _meleeOffsetL, true); if (distanceL < distanceR) { WhereIsATarget2(_targetToAttack.position + _meleeOffsetL); distance = distanceL; } else { WhereIsATarget2(_targetToAttack.position + _meleeOffsetR); distance = distanceR; } } if (_readyToAttack) { Attack(); _Rig2D.velocity = Vector2.zero; } else { if (_Rig2D.velocity.x > 0 && _axis.x < 0) { _Rig2D.velocity = Vector2.zero; } if (_Rig2D.velocity.x < 0 && _axis.x > 0) { _Rig2D.velocity = Vector2.zero; } if (_Rig2D.velocity.y > 0 && _axis.y < 0) { _Rig2D.velocity = Vector2.zero; } if (_Rig2D.velocity.y < 0 && _axis.y > 0) { _Rig2D.velocity = Vector2.zero; } _Rig2D.AddForce(_axis * _realMaxSpeed, ForceMode2D.Impulse); _Anim.SetBool("Walking", true); } if (_facingRight && CheckAxis() < 0) { Flip(); } if (!_facingRight && CheckAxis() > 0) { Flip(); } }