*一定時間ごとにボスのHPを回復させる能力を持つオブジェクトの作成
(ボスサイドのスクリプト)
*「HP回復アイテム」と同じような関数を作成する。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Boss : MonoBehaviour {
public int bossHP;
public Text bossHPLabel;
public Slider bossHPSlider;
private GameObject[] effectPrefab = new GameObject[2];
private GameObject[] itemPrefab = new GameObject[2];
private void Awake()
{
effectPrefab[0] = (GameObject)Resources.Load("Hit_01");
effectPrefab[1] = (GameObject)Resources.Load("Hit_02");
itemPrefab[0] = (GameObject)Resources.Load("CureItem");
itemPrefab[1] = (GameObject)Resources.Load("ShellItem");
}
private void Start()
{
bossHPLabel.text = "HP:" + bossHP;
bossHPSlider.value = bossHP;
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Shell"))
{
bossHP -= 1;
bossHPLabel.text = "HP:" + bossHP;
bossHPSlider.value = bossHP;
if (bossHP > 0)
{
GameObject effect1 = Instantiate(effectPrefab[0], transform.position, Quaternion.identity) as GameObject;
Destroy(effect1, 1.0f);
Destroy(other.gameObject);
}
else
{
Vector3 pos2 = transform.position;
GameObject effect2 = Instantiate(effectPrefab[1], new Vector3(pos2.x, pos2.y + 0.5f, pos2.z), Quaternion.identity) as GameObject;
Destroy(effect2, 1.0f);
Destroy(other.gameObject);
Destroy(gameObject);
GameObject dropItem = itemPrefab[Random.Range(0, itemPrefab.Length)];
Vector3 pos = transform.position;
pos.y = 0.7f;
transform.position = pos;
Instantiate(dropItem, transform.position, Quaternion.identity);
}
}
}
// ボスのHPを増加(回復)させる関数
public void AddBossHP(int amount){
bossHP += amount;
if(bossHP > 100){
bossHP = 100;
}
bossHPLabel.text = "HP:" + bossHP;
bossHPSlider.value = bossHP;
}
}
(ガードサイドのスクリプト)
*一定時間ごとにボスのHPを回復させる関数を呼び出して実行する。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BossGuardBot : MonoBehaviour {
public GameObject boss;
private int timeCount = 0;
void Update () {
timeCount += 1;
// ここのロジックをよく吟味すること。
if(timeCount % 60 == 0){
boss.GetComponent<Boss>().AddBossHP(1);
}
}
}
