private void DetectEnemy(Vector2 position, Vector2 direction, float range, int damage) { GameObject lastEnemyHit = null; RaycastHit2D enemyHitData = Physics2D.Raycast(position, direction, range, 1 << StaticVar.LAYER_ENEMY); while (enemyHitData) { lastEnemyHit = enemyHitData.collider.gameObject; range -= enemyHitData.distance; lastEnemyHit.GetComponent <Collider2D>().enabled = false; enemyHitData = Physics2D.Raycast(enemyHitData.point, direction, range, 1 << StaticVar.LAYER_ENEMY); lastEnemyHit.GetComponent <Collider2D>().enabled = true; Enemy enemy = lastEnemyHit.GetComponent <Enemy>(); if (enemy) { enemy.GetHit(damage); } Enemy_Boss boss = lastEnemyHit.GetComponent <Enemy_Boss>(); if (boss) { boss.GetHit(damage); } } }
private int maxHP; // 最大HP void Start() { Instance = this; phase = Phase.Standy; endDeath = false; maxHP = hp; SpriteRenderer sr = this.gameObject.GetComponent <SpriteRenderer>(); enemyColor = sr.color; bitObjects = new GameObject[4]; for (int i = 0; i < 4; i++) { bitObjects[i] = Instantiate(bitPrefabs); } this.transform.position = new Vector3(0.0f, 12.0f, 0.0f); this.GetComponent <Collider2D>().enabled = false; for (int i = 0; i < 4; i++) { bitObjects[i].GetComponent <Collider2D>().enabled = false; } StartCoroutine(StandbyCorutine()); }
// Update is called once per frame void Update() { if (timeBtwAttack <= 0) { if (Input.GetButtonDown("Attack")) { animator.SetBool("Sword", true); audioSource.PlayOneShot(collisionSoundClip); StartCoroutine(attacking()); Collider2D[] enemiesToDamage = Physics2D.OverlapCircleAll(attackPos.position, attackRange, WhatIsEnemies); for (int i = 0; i < enemiesToDamage.Length; i++) { WallEnemyAI e = enemiesToDamage[i].GetComponent <WallEnemyAI>(); NEnemy e2 = enemiesToDamage[i].GetComponent <NEnemy>(); FlyEnemy e3 = enemiesToDamage[i].GetComponent <FlyEnemy>(); Enemy_Boss eb = enemiesToDamage[i].GetComponent <Enemy_Boss>(); if (e) { CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f); e.TakeDamage(damage); } if (e2) { CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f); e2.TakeDamage(damage); } if (e3) { CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f); e3.TakeDamage(damage); } if (eb) { CameraShaker.Instance.ShakeOnce(1f, 4f, 0.1f, 0.1f); eb.TakeDamage(damage); } } timeBtwAttack = startTimeBtwAttack; } } else { timeBtwAttack -= Time.deltaTime; } }