(シールドの作成)シールドの使用に制限を加える
シールドの使用制限
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using UnityEngine.UI;
public class PlayerHealth : MonoBehaviourPunCallbacks
{
private int maxHP = 10;
private int HP;
public Slider hpSlider;
private Text koLabel;
public GameObject shield;
private int sNum = 1;
public Slider shieldSlider;
private float maxEnergy = 100;
private float energy;
// ★追加
public Image fillImage;
private Color initialColor;
public AudioClip shieldBreak;
private bool isPlay = false;
private bool permit = true; // シールドの発動許可
private void Start()
{
HP = maxHP;
hpSlider.maxValue = HP;
hpSlider.value = HP;
koLabel = GameObject.Find("KOLabel").GetComponent<Text>();
energy = maxEnergy;
shieldSlider.maxValue = energy;
shieldSlider.value = energy;
// ★追加
// fillの初期カラーの取得
initialColor = fillImage.color;
}
private void Update()
{
if(photonView.IsMine)
{
if(Input.GetKeyDown(KeyCode.S) && permit) // ★追加(シールドの発動許可)
{
sNum *= -1;
if(sNum == -1)
{
shield.SetActive(true);
}
else if(sNum == 1)
{
shield.SetActive(false);
}
photonView.RPC("ShieldManager", RpcTarget.Others);
}
}
if (sNum == -1)
{
energy -= Time.deltaTime * 10f;
if (energy < 0)
{
energy = 0;
// ★追加
// パワーが0になった場合、fillバーの色を「黄色」に変更する。
fillImage.color = Color.yellow;
// シールドが破壊される効果音(1回だけ鳴るように工夫する)
if(!isPlay)
{
AudioSource.PlayClipAtPoint(shieldBreak, Camera.main.transform.position);
isPlay = true;
}
// sNumを1に変更する。
sNum = 1;
// シールドをオフにする。
shield.SetActive(false);
// シールド発動許可をfalseにする
permit = false;
}
}
else if (sNum == 1)
{
energy += Time.deltaTime * 10f;
if (energy > maxEnergy)
{
energy = maxEnergy;
// ★追加
// エネルギーがmaxになった時、fillバーの色を「初期値」に戻す。
fillImage.color = initialColor;
// シールドの発動許可をtrueにする
permit = true;
// isPlayをfalseに戻す。
isPlay = false;
}
}
shieldSlider.value = energy;
}
private void OnTriggerEnter(Collider other)
{
if(other.CompareTag("Trigger"))
{
HP -= 1;
print(photonView.Owner.NickName + HP);
hpSlider.value = HP;
if(HP < 1)
{
this.gameObject.SetActive(false);
koLabel.text = photonView.Owner.NickName + "KO!";
}
photonView.RPC("Damage", RpcTarget.Others);
}
}
[PunRPC]
void Damage()
{
HP -= 1;
print(photonView.Owner.NickName + HP);
hpSlider.value = HP;
if (HP < 1)
{
this.gameObject.SetActive(false);
koLabel.text = photonView.Owner.NickName + "KO!";
}
}
[PunRPC]
void ShieldManager()
{
sNum *= -1;
if (sNum == -1)
{
shield.SetActive(true);
}
else if (sNum == 1)
{
shield.SetActive(false);
}
}
}
【2020版】BattleOnline(基礎/全34回)
他のコースを見るシールドの使用制限
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using UnityEngine.UI;
public class PlayerHealth : MonoBehaviourPunCallbacks
{
private int maxHP = 10;
private int HP;
public Slider hpSlider;
private Text koLabel;
public GameObject shield;
private int sNum = 1;
public Slider shieldSlider;
private float maxEnergy = 100;
private float energy;
// ★追加
public Image fillImage;
private Color initialColor;
public AudioClip shieldBreak;
private bool isPlay = false;
private bool permit = true; // シールドの発動許可
private void Start()
{
HP = maxHP;
hpSlider.maxValue = HP;
hpSlider.value = HP;
koLabel = GameObject.Find("KOLabel").GetComponent<Text>();
energy = maxEnergy;
shieldSlider.maxValue = energy;
shieldSlider.value = energy;
// ★追加
// fillの初期カラーの取得
initialColor = fillImage.color;
}
private void Update()
{
if(photonView.IsMine)
{
if(Input.GetKeyDown(KeyCode.S) && permit) // ★追加(シールドの発動許可)
{
sNum *= -1;
if(sNum == -1)
{
shield.SetActive(true);
}
else if(sNum == 1)
{
shield.SetActive(false);
}
photonView.RPC("ShieldManager", RpcTarget.Others);
}
}
if (sNum == -1)
{
energy -= Time.deltaTime * 10f;
if (energy < 0)
{
energy = 0;
// ★追加
// パワーが0になった場合、fillバーの色を「黄色」に変更する。
fillImage.color = Color.yellow;
// シールドが破壊される効果音(1回だけ鳴るように工夫する)
if(!isPlay)
{
AudioSource.PlayClipAtPoint(shieldBreak, Camera.main.transform.position);
isPlay = true;
}
// sNumを1に変更する。
sNum = 1;
// シールドをオフにする。
shield.SetActive(false);
// シールド発動許可をfalseにする
permit = false;
}
}
else if (sNum == 1)
{
energy += Time.deltaTime * 10f;
if (energy > maxEnergy)
{
energy = maxEnergy;
// ★追加
// エネルギーがmaxになった時、fillバーの色を「初期値」に戻す。
fillImage.color = initialColor;
// シールドの発動許可をtrueにする
permit = true;
// isPlayをfalseに戻す。
isPlay = false;
}
}
shieldSlider.value = energy;
}
private void OnTriggerEnter(Collider other)
{
if(other.CompareTag("Trigger"))
{
HP -= 1;
print(photonView.Owner.NickName + HP);
hpSlider.value = HP;
if(HP < 1)
{
this.gameObject.SetActive(false);
koLabel.text = photonView.Owner.NickName + "KO!";
}
photonView.RPC("Damage", RpcTarget.Others);
}
}
[PunRPC]
void Damage()
{
HP -= 1;
print(photonView.Owner.NickName + HP);
hpSlider.value = HP;
if (HP < 1)
{
this.gameObject.SetActive(false);
koLabel.text = photonView.Owner.NickName + "KO!";
}
}
[PunRPC]
void ShieldManager()
{
sNum *= -1;
if (sNum == -1)
{
shield.SetActive(true);
}
else if (sNum == 1)
{
shield.SetActive(false);
}
}
}
(シールドの作成)シールドの使用に制限を加える