アイテムの作成(ボスの攻撃を一定時間停止)
![658243b9 f5a2 4c2f bd42 c94086378721](https://codegenius.org/uploads/slide/image/2336/658243b9-f5a2-4c2f-bd42-c94086378721.jpeg)
![A5d458eb 7a20 4d9f 8c20 688d48182fd6](https://codegenius.org/uploads/slide/image/2337/a5d458eb-7a20-4d9f-8c20-688d48182fd6.jpeg)
![4dfa1034 55ef 4765 ad38 1dc387b22ac1](https://codegenius.org/uploads/slide/image/2338/4dfa1034-55ef-4765-ad38-1dc387b22ac1.jpeg)
タイマーで敵の攻撃を停止する
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyFireMissile : MonoBehaviour
{
public GameObject enemyMissilePrefab;
public float missileSpeed;
private int timeCount = 0;
// ★追加
public float stopTimer = 10;
void Update()
{
timeCount += 1;
// ★追加
// タイマーを進める
stopTimer -= Time.deltaTime;
// ★追加
// タイマーが0未満になったら「0」で止める。
if (stopTimer < 0)
{
stopTimer = 0;
}
// ★追加
print("攻撃開始まであと" + stopTimer + "秒");
// ★追加
// タイマーが0以下になったら敵が攻撃を開始する。
if (timeCount % 60 == 0 && stopTimer <= 0)
{
GameObject enemyMissile = Instantiate(enemyMissilePrefab, transform.position, Quaternion.identity);
Rigidbody enemyMissileRb = enemyMissile.GetComponent<Rigidbody>();
enemyMissileRb.AddForce(transform.forward * missileSpeed);
Destroy(enemyMissile, 3.0f);
}
}
// ★追加
// タイマーの時間を増加させるメソッド
public void AddStopTimer(float amount)
{
stopTimer += amount;
}
}
![A5d3ea58 12d9 4fd4 b337 6e269aa918f0](https://codegenius.org/uploads/slide/image/2339/a5d3ea58-12d9-4fd4-b337-6e269aa918f0.jpeg)
攻撃停止アイテム
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StopAttackItem : MonoBehaviour
{
public GameObject[] targets;
void Update()
{
// ★「EnemyFireMissile」プレハブに「EnemyFireMissile」のタグを付けてください。(ポイント)
targets = GameObject.FindGameObjectsWithTag("EnemyFireMissile");
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Missile")
{
Destroy(other.gameObject);
for (int i = 0; i < targets.Length; i++)
{
targets[i].GetComponent<EnemyFireMissile>().AddStopTimer(10.0f);
}
Destroy(gameObject);
}
}
}
![Aa2d8474 029d 4b05 b602 0871f2352133](https://codegenius.org/uploads/slide/image/2340/aa2d8474-029d-4b05-b602-0871f2352133.jpeg)
![2d9aee9d cf05 42b1 8120 f6b52a926dd1](https://codegenius.org/uploads/slide/image/2341/2d9aee9d-cf05-42b1-8120-f6b52a926dd1.jpeg)
![7a589526 c033 4099 a6f1 b7a5a7f27b8b](https://codegenius.org/uploads/slide/image/2342/7a589526-c033-4099-a6f1-b7a5a7f27b8b.jpeg)
![658243b9 f5a2 4c2f bd42 c94086378721](https://codegenius.org/uploads/slide/image/2336/658243b9-f5a2-4c2f-bd42-c94086378721.jpeg)
![A5d458eb 7a20 4d9f 8c20 688d48182fd6](https://codegenius.org/uploads/slide/image/2337/a5d458eb-7a20-4d9f-8c20-688d48182fd6.jpeg)
![4dfa1034 55ef 4765 ad38 1dc387b22ac1](https://codegenius.org/uploads/slide/image/2338/4dfa1034-55ef-4765-ad38-1dc387b22ac1.jpeg)
タイマーで敵の攻撃を停止する
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyFireMissile : MonoBehaviour
{
public GameObject enemyMissilePrefab;
public float missileSpeed;
private int timeCount = 0;
// ★追加
public float stopTimer = 10;
void Update()
{
timeCount += 1;
// ★追加
// タイマーを進める
stopTimer -= Time.deltaTime;
// ★追加
// タイマーが0未満になったら「0」で止める。
if (stopTimer < 0)
{
stopTimer = 0;
}
// ★追加
print("攻撃開始まであと" + stopTimer + "秒");
// ★追加
// タイマーが0以下になったら敵が攻撃を開始する。
if (timeCount % 60 == 0 && stopTimer <= 0)
{
GameObject enemyMissile = Instantiate(enemyMissilePrefab, transform.position, Quaternion.identity);
Rigidbody enemyMissileRb = enemyMissile.GetComponent<Rigidbody>();
enemyMissileRb.AddForce(transform.forward * missileSpeed);
Destroy(enemyMissile, 3.0f);
}
}
// ★追加
// タイマーの時間を増加させるメソッド
public void AddStopTimer(float amount)
{
stopTimer += amount;
}
}
![A5d3ea58 12d9 4fd4 b337 6e269aa918f0](https://codegenius.org/uploads/slide/image/2339/a5d3ea58-12d9-4fd4-b337-6e269aa918f0.jpeg)
攻撃停止アイテム
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StopAttackItem : MonoBehaviour
{
public GameObject[] targets;
void Update()
{
// ★「EnemyFireMissile」プレハブに「EnemyFireMissile」のタグを付けてください。(ポイント)
targets = GameObject.FindGameObjectsWithTag("EnemyFireMissile");
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Missile")
{
Destroy(other.gameObject);
for (int i = 0; i < targets.Length; i++)
{
targets[i].GetComponent<EnemyFireMissile>().AddStopTimer(10.0f);
}
Destroy(gameObject);
}
}
}
![Aa2d8474 029d 4b05 b602 0871f2352133](https://codegenius.org/uploads/slide/image/2340/aa2d8474-029d-4b05-b602-0871f2352133.jpeg)
![2d9aee9d cf05 42b1 8120 f6b52a926dd1](https://codegenius.org/uploads/slide/image/2341/2d9aee9d-cf05-42b1-8120-f6b52a926dd1.jpeg)
![7a589526 c033 4099 a6f1 b7a5a7f27b8b](https://codegenius.org/uploads/slide/image/2342/7a589526-c033-4099-a6f1-b7a5a7f27b8b.jpeg)
アイテムの作成(ボスの攻撃を一定時間停止)