(シールドの作成)スライダーの増減(動き)を同期する
![8a60e19f 8368 4bb9 897e b5dc8118e54f](https://codegenius.org/uploads/slide/image/8738/8a60e19f-8368-4bb9-897e-b5dc8118e54f.jpeg)
![08de0cd5 c0b6 4641 b048 c3bf5a1ef418](https://codegenius.org/uploads/slide/image/8739/08de0cd5-c0b6-4641-b048-c3bf5a1ef418.jpeg)
スライダーの増減の同期
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using UnityEngine.UI;
using TMPro;
public class PlayerHealth : MonoBehaviourPunCallbacks
{
private int maxHP = 10;
private int HP;
public Slider hpSlider;
private TextMeshProUGUI koLabel;
public GameObject shield;
private int num = 1;
public Slider shieldSlider;
private float maxEnergy = 100;
private float energy;
void Start()
{
HP = maxHP;
hpSlider.maxValue = HP;
hpSlider.value = HP;
koLabel = GameObject.Find("KOLabel").GetComponent<TextMeshProUGUI>();
shield.SetActive(false);
energy = maxEnergy;
shieldSlider.maxValue = energy;
shieldSlider.value = energy;
}
private void Update()
{
if (photonView.IsMine)
{
if (Input.GetKeyDown(KeyCode.Q))
{
num *= -1;
if (num == -1)
{
shield.SetActive(true);
}
else if (num == 1)
{
shield.SetActive(false);
}
photonView.RPC("ShieldManager", RpcTarget.Others);
}
}
// ★変更(下記のコードをphotonView.IsMineの「外側に」移動する。)
// ポイント
// 相手の画面(すなわち、photonView.IsMineではない場所)でenergyの数値を動かすため
// ここから
if (num == -1)
{
energy -= Time.deltaTime * 5f;
if (energy < 0)
{
energy = 0;
}
}
else if (num == 1)
{
energy += Time.deltaTime * 5f;
if (energy > maxEnergy)
{
energy = maxEnergy;
}
}
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()
{
num *= -1;
if (num == -1)
{
shield.SetActive(true);
}
else if (num == 1)
{
shield.SetActive(false);
}
}
}
![855cd3a3 def5 4d65 95e9 3be1c80df71e](https://codegenius.org/uploads/slide/image/8740/855cd3a3-def5-4d65-95e9-3be1c80df71e.jpeg)
【2021版】BattleOnline(全37回)
他のコースを見る![8a60e19f 8368 4bb9 897e b5dc8118e54f](https://codegenius.org/uploads/slide/image/8738/8a60e19f-8368-4bb9-897e-b5dc8118e54f.jpeg)
![08de0cd5 c0b6 4641 b048 c3bf5a1ef418](https://codegenius.org/uploads/slide/image/8739/08de0cd5-c0b6-4641-b048-c3bf5a1ef418.jpeg)
スライダーの増減の同期
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using UnityEngine.UI;
using TMPro;
public class PlayerHealth : MonoBehaviourPunCallbacks
{
private int maxHP = 10;
private int HP;
public Slider hpSlider;
private TextMeshProUGUI koLabel;
public GameObject shield;
private int num = 1;
public Slider shieldSlider;
private float maxEnergy = 100;
private float energy;
void Start()
{
HP = maxHP;
hpSlider.maxValue = HP;
hpSlider.value = HP;
koLabel = GameObject.Find("KOLabel").GetComponent<TextMeshProUGUI>();
shield.SetActive(false);
energy = maxEnergy;
shieldSlider.maxValue = energy;
shieldSlider.value = energy;
}
private void Update()
{
if (photonView.IsMine)
{
if (Input.GetKeyDown(KeyCode.Q))
{
num *= -1;
if (num == -1)
{
shield.SetActive(true);
}
else if (num == 1)
{
shield.SetActive(false);
}
photonView.RPC("ShieldManager", RpcTarget.Others);
}
}
// ★変更(下記のコードをphotonView.IsMineの「外側に」移動する。)
// ポイント
// 相手の画面(すなわち、photonView.IsMineではない場所)でenergyの数値を動かすため
// ここから
if (num == -1)
{
energy -= Time.deltaTime * 5f;
if (energy < 0)
{
energy = 0;
}
}
else if (num == 1)
{
energy += Time.deltaTime * 5f;
if (energy > maxEnergy)
{
energy = maxEnergy;
}
}
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()
{
num *= -1;
if (num == -1)
{
shield.SetActive(true);
}
else if (num == 1)
{
shield.SetActive(false);
}
}
}
![855cd3a3 def5 4d65 95e9 3be1c80df71e](https://codegenius.org/uploads/slide/image/8740/855cd3a3-def5-4d65-95e9-3be1c80df71e.jpeg)
(シールドの作成)スライダーの増減(動き)を同期する