public Enemy(Objectmanager objectmanager, ContentManager contentManager, Mathe mathe, Enemydatabase enemydatabase, Enemytype typ, Vector2 position, Richtung blickrichtung, float skalierung) { Gravitation = 0.40f; MaxSpeed = new Vector2(6, 15); this.Objectmanager = objectmanager; this.Mathe = mathe; this.State = Enemystate.Idle; this.Blickrichtung = blickrichtung; this.Skalierung = skalierung; this.PositionCurrent = position; this.Typ = typ; Enemy Tempenemy = enemydatabase.Read(typ); Texturmaße = new Vector2(Tempenemy.Texturmaße.X, Tempenemy.Texturmaße.Y); AniGeschwindigkeit = Tempenemy.AniGeschwindigkeit; Spalten = Tempenemy.Spalten; Texturname = Tempenemy.Texturname; Wiederholen = Tempenemy.Wiederholen; Textur = Tempenemy.Textur; Kollision = new Rectangle((int)(Texturmaße.X / 2) - 5, (int)Texturmaße.Y - 20, 10, 10); for (int i = 0; i < Textur.Count(); i++) { if (Texturname[i] == "Idle") { Animation = new Animation(Textur[i], true, Spalten[i], new Rectangle(0, 0, (int)Texturmaße.X, (int)Texturmaße.Y), skalierung, AniGeschwindigkeit[i]); break; } } }
// Use this for initialization void Start() { player = GameObject.Find("Player"); timeridle = _timeridle; timerwalking = _timerwalking; timerTrowing = _timerTrowing; timerjumping = _timerjumping; timerAttacking = _timerAttacking; timerhurting = _timerhurting; timerlanded = _timerlanded; _EnemyCurrentState = Enemystate.Idle; }
// Start is called before the first frame update void Start() { state = Enemystate.idle; myRigidBody = GetComponent <Rigidbody2D>(); Anim = GetComponent <Animator>(); facingRight = false; currentHealth = maxHealth; myCollider = GetComponent <CapsuleCollider2D>(); player = GameObject.Find("Character").GetComponent <PlayerController>(); blood_small = GameObject.Find("Quick Blood Splatter(hurt)").GetComponent <ParticleSystem>(); blood_large = GameObject.Find("Quick Blood Splatter(death)").GetComponent <ParticleSystem>(); }
void Update() { if (movement.x < 0) { animator.SetBool("isMovingLeft", true); } else if (movement.x > 0) { animator.SetBool("isMovingRight", true); } if (movement.y < 0) { animator.SetBool("isMovingUpDown", true); } else if (movement.y > 0) { animator.SetBool("isMovingUpDown", true); } if (movement.x == 0) { animator.SetBool("isMovingLeft", false); animator.SetBool("isMovingRight", false); } if (movement.y == 0) { animator.SetBool("isMovingUpDown", false); animator.SetBool("isMovingUpDown", false); } if (currState != Enemystate.Die) { currState = Enemystate.Wander; } if (currState == Enemystate.Wander) { Wander(); } }
public virtual void CollideWithPlayer() { if (current != Enemystate.dead) { //if player hits enemy on top if (player.Previous.Bottom < Location.Center.Y) { player.ySpeed = -15;//bounces player current = Enemystate.dead; //kill enemy } else if (player.State == Player.Playerstate.defending) { current = Enemystate.dead; //player.State = Player.Playerstate.shieldBreaking; player.TakeHit(); } else { player.TakeHit(); } } }
void EnemyLogic() { distance = Vector2.Distance(transform.position, target.position); if (player.dead == false) { if (distance > attackDistance) { state = Enemystate.tracking; StopAttack(); } else if (attackDistance >= distance && cooling == false) { state = Enemystate.attack; Attack(); } if (cooling) { Cooldown(); state = Enemystate.idle; Anim.ResetTrigger("Attack"); } } }
// Update is called once per frame void Update() { x = gameObject.transform.position.x; y = gameObject.transform.position.y; targetx = player.transform.position.x; targety = player.transform.position.y; switch (_EnemyCurrentState) { case Enemystate.Idle: if (_timeridle < 0) { //idle _EnemyAnimation.PlayIdle(); _timeridle = timeridle; } else { _timeridle -= Time.deltaTime; } break; case Enemystate.Walking: if (_timerwalking < 0) { //walking _EnemyAnimation.PlayWalking(); _timerwalking = timerwalking; } else { _timerwalking -= Time.deltaTime; } break; case Enemystate.Atacking: break; case Enemystate.Hit: break; case Enemystate.Jumping: if (_timerjumping < 0) { _EnemyAnimation.PlayJump(); _timerjumping = timerjumping; } else { _timerjumping -= Time.deltaTime; } break; } if (flip) { gameObject.transform.rotation = Quaternion.Euler(0, 180, 0); } else if (!flip) { gameObject.transform.rotation = Quaternion.Euler(0, 0, 0); } if (x >= targetx + 0.5f && targetx >= x + lookingfield * -1) //link { _EnemyCurrentState = Enemystate.Walking; flip = false; //print("hallo"); } else if (x <= targetx - 0.5f && targetx <= x + lookingfield) //rechts { //print("hallo 2"); _EnemyCurrentState = Enemystate.Walking; flip = true; } else { _EnemyCurrentState = Enemystate.Idle; } if (y < targetx) { //_EnemyCurrentState = Enemystate.Jumping; } //print(flip); }
// Update is called once per frame void Update() { distance = Vector3.Distance(transform.position, player.transform.position); if (Mathf.Abs(player.transform.position.x - transform.position.x) < attackDistance) { a = 0; } else if (player.transform.position.x < transform.position.x) { a = -1; transform.localScale = new Vector3(0.2f * a, 0.2f, 1); } else { a = 1; transform.localScale = new Vector3(0.2f * a, 0.2f, 1); } switch (this.enemystate) { case Enemystate.Follow: { if (EnemyStatus.damegeCheck) { this.enemystate = Enemystate.Stop; pos = transform.position; } else if (distance > 10f || distance < attackDistance) { this.enemystate = Enemystate.wait; pos = transform.position; } else { animator.SetBool("Move", true); } transform.Translate(speed * a, 0, 0); } break; case Enemystate.wait: { rigidbody2D.velocity = Vector3.zero; if (distance < 9.8f && distance > attackDistance + 0.2f) { this.enemystate = Enemystate.Follow; } else { animator.SetBool("Move", false); } } break; case Enemystate.Stop: { delta += Time.deltaTime; transform.position = pos; if (delta > span) { delta = 0; EnemyStatus.damegeCheck = false; this.enemystate = Enemystate.wait; animator.SetBool("Move", false); } } break; } }
public void ChangeStatus(Enemystate state) { if (state != State) { State = state; for (int i = 0; i < Textur.Count(); i++) { if (Texturname[i] == state.ToString()) { Animation.Texture = Textur[i]; Animation.Spalte = Spalten[i]; Animation.Geschwindigkeit = ((float)1 / AniGeschwindigkeit[i]); Animation.Wiederholen = Wiederholen[i]; break; } } Animation.Abgeschlossen = false; Animation.AktuelleSpalte = 0; } }
private void Physik() { Geschwindigkeit.Y += Gravitation; //Graviation erhöht Fallgeschwindigkeit if (Geschwindigkeit.Y > MaxSpeed.Y) Geschwindigkeit.Y = MaxSpeed.Y; //Maximale Fallgeschwindigkeit if (PositionCurrent.Y > 1024) State = Enemystate.Dead; //Sturz in Abgrund -> Tod }
public override void Reset() { //overide reset, enemies respawn and set to standing base.Reset(); active = true; health = 1; Location = new Rectangle(spawnX, spawnY, Location.Width, Location.Height); current = Enemystate.standing; }
public override void Update() { //apply the gravity base.Update(); ySpeed += Movable.gravity; if (health <= 0) { current = Enemystate.dead; } }