void Start() { state = Enemy3State.Idle; transform.localScale = new Vector3(1, 1, 1); player = GameObject.FindGameObjectWithTag("Player"); playerController = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerController>(); }
void Start() { state = Enemy3State.Idle; transform.localScale = new Vector3(1,1,1); player = GameObject.FindGameObjectWithTag("Player"); playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>(); }
public void Activate() { if (currentState == Enemy3State.Inactive) { currentState = Enemy3State.Activated; } }
public void Death() { gm.score += scoreWorth; gm.UpdateScore(); currentState = Enemy3State.Dead; fabCtrl.PlaySoundEnemy3Destroyed(); GetComponent <SpriteRenderer>().enabled = false; GetComponent <BoxCollider2D>().enabled = false; //animation + effects? }
void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "PlayerProjectile") { isDie = true; Instantiate(enemyExplosion, transform.position, transform.rotation); Destroy(other.gameObject); state = Enemy3State.Die; Destroy(this.gameObject, 1f); } if (other.gameObject.tag == "Grenade") { Instantiate(grenadeExplosionPrefab, transform.position, transform.rotation); this.transform.position += transform.up * 6.5f * Time.deltaTime; state = Enemy3State.GrenadeDie; Destroy(this.gameObject, 1.2f); } }
void FixedUpdate() { Vector3 direction = (player.transform.position - this.transform.position).normalized; Ray ray = new Ray(this.transform.position, direction); RaycastHit hitinfo; bool isPlayer = Physics.Raycast(ray, out hitinfo, 0.5f); if (isPlayer) { if (playerController != null && playerController.Projectile && transform.localScale.x == -player.transform.localScale.x) { state = Enemy3State.Die; isDie = true; Instantiate(enemyExplosion, this.transform.position, Quaternion.identity); Destroy(this.gameObject, 0.4f); } isPlayer = false; } //Debug.DrawLine(transform.position, ray.direction, Color.red, 1); }
// Update is called once per frame void Update() { if (transform.position.x - player.transform.position.x > 0) { transform.localScale = new Vector3(1, 1, 1); } else { transform.localScale = new Vector3(-1, 1, 1); } //控制敌人1各种状态之间的切换 mtime += Time.deltaTime; switch (state) { case Enemy3State.Idle: enemy3Idle.SetActive(true); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(false); break; case Enemy3State.Die: if (mtime > 1.5f) { AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x, transform.position.y, transform.position.z)); mtime = 0; } if (enemy3Die != null) { enemy3Die.SetActive(true); enemy3Idle.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(false); Destroy(this.gameObject,2f); } break; case Enemy3State.GrenadeDie: if (mtime > 1.5f) { AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x, transform.position.y, transform.position.z)); mtime = 0; } enemy3Idle.SetActive(false); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(true); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(false); if (enemy3grenadeDie != null) { Destroy(this.gameObject,2f); } break; case Enemy3State.Shoot: if (isDie) { state = Enemy3State.Die; isDie = false; } enemy3Idle.SetActive(false); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(true); enemy3ShootWalking.SetActive(false); timer -= Time.deltaTime; if (timer <= 0 && Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f) { ShootBall(); timer = 0.8f; } break; case Enemy3State.ShootWalking: transform.position=Vector2.MoveTowards(transform.position,player.transform.position,Time.deltaTime*1f); enemy3Idle.SetActive(false); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(true); break; default: break; } if (transform.position.x - player.transform.position.x < 8) { state = Enemy3State.ShootWalking; if (isDie) { state = Enemy3State.Die; } } if (Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f) { state = Enemy3State.Shoot; if (isDie) { state = Enemy3State.Die; } } }
void FixedUpdate() { Vector3 direction = (player.transform.position - this.transform.position).normalized; Ray ray = new Ray(this.transform.position, direction); RaycastHit hitinfo; bool isPlayer = Physics.Raycast(ray, out hitinfo, 0.5f); if (isPlayer) { if (playerController!=null&&playerController.Projectile&&transform.localScale.x==-player.transform.localScale.x) { state = Enemy3State.Die; isDie = true; Instantiate(enemyExplosion, this.transform.position, Quaternion.identity); Destroy(this.gameObject, 0.4f); } isPlayer = false; } //Debug.DrawLine(transform.position, ray.direction, Color.red, 1); }
// Update is called once per frame void Update() { if (transform.position.x - player.transform.position.x > 0) { transform.localScale = new Vector3(1, 1, 1); } else { transform.localScale = new Vector3(-1, 1, 1); } //控制敌人1各种状态之间的切换 mtime += Time.deltaTime; switch (state) { case Enemy3State.Idle: enemy3Idle.SetActive(true); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(false); break; case Enemy3State.Die: if (mtime > 1.5f) { AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x, transform.position.y, transform.position.z)); mtime = 0; } if (enemy3Die != null) { enemy3Die.SetActive(true); enemy3Idle.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(false); Destroy(this.gameObject, 2f); } break; case Enemy3State.GrenadeDie: if (mtime > 1.5f) { AudioSource.PlayClipAtPoint(enemyDie, new Vector3(transform.position.x, transform.position.y, transform.position.z)); mtime = 0; } enemy3Idle.SetActive(false); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(true); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(false); if (enemy3grenadeDie != null) { Destroy(this.gameObject, 2f); } break; case Enemy3State.Shoot: if (isDie) { state = Enemy3State.Die; isDie = false; } enemy3Idle.SetActive(false); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(true); enemy3ShootWalking.SetActive(false); timer -= Time.deltaTime; if (timer <= 0 && Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f) { ShootBall(); timer = 0.8f; } break; case Enemy3State.ShootWalking: transform.position = Vector2.MoveTowards(transform.position, player.transform.position, Time.deltaTime * 1f); enemy3Idle.SetActive(false); enemy3Die.SetActive(false); enemy3grenadeDie.SetActive(false); enemy3Shoot.SetActive(false); enemy3ShootWalking.SetActive(true); break; default: break; } if (transform.position.x - player.transform.position.x < 8) { state = Enemy3State.ShootWalking; if (isDie) { state = Enemy3State.Die; } } if (Mathf.Abs(transform.position.x - player.transform.position.x) < 3.5f) { state = Enemy3State.Shoot; if (isDie) { state = Enemy3State.Die; } } }