¡¡UIManager ¥¹¥¯¥ê¥×¥È¤Ë¡¢HP ¤ÎÃͤ˱þ¤¸¤Æ¡¢¥é¥¤¥ÕÍÑ¥¢¥¤¥³¥ó¤òÀ¸À®¤¹¤ë½èÍý¤È¡¢É½¼¨¤ò¹¹¿·¤¹¤ë½èÍý¤ò¤½¤ì¤¾¤ì¥á¥½¥Ã¥Éñ°Ì¤Ç½àÈ÷¤·¤Þ¤·¤¿¡£
¡¡¥á¥½¥Ã¥É¤Ï¤¤¤º¤ì¤«¤«¤é½èÍý¤Î¼Â¹ÔÌ¿Îá¤ò¼õ¤±¼è¤é¤Ê¤±¤ì¤ÐÆ°¤¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢¤¤¤Þ¤Ï¤Þ¤À½èÍý¤Î½àÈ÷¤¬¤Ç¤¤¿¤À¤±¤Ç¤¢¤ê¡¢¼ÂºÝ¤Ë¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¤â¡¢¥¢¥¤¥³¥ó¤ÏÀ¸À®¤µ¤ì¤Þ¤»¤ó¤·¡¢¹¹¿·¤â¤µ¤ì¤Þ¤»¤ó¡£
¡¡¤è¤Ã¤Æ¡¢½èÍý¤Î½àÈ÷¤¬½ÐÍ褿¤é¡¢¼¡¤Ï¤½¤Î½èÍý¤òŬÀڤʥ¿¥¤¥ß¥ó¥°¤Ç¼Â¹Ô¤¹¤ë½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¡¡¥é¥¤¥ÕÍÑ¥¢¥¤¥³¥ó¤Ï¡¢HP ¤ÎÃͤÈƱ´ü¤µ¤»¤ë¤³¤È¤Ë¤è¤ê¡¢¥æ¡¼¥¶¡¼¤Ë¸½ºß¤ÎHP¤òÅÁ¤¨¤ëÌò³ä¤¬¤¢¤ê¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢¥é¥¤¥ÕÍÑ¥¢¥¤¥³¥ó¤òÀ¸À®¤·¤¿¤ê¡¢É½¼¨¤ò¹¹¿·¤¹¤ë¤¿¤á¤Î¾ðÊó¤È¤·¤Æ¡¢HP ¤ò´ÉÍý¤·¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤«¤éÌ¿Îá¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬Å¬ÀڤǤ¢¤ë¤È¸À¤¨¤Þ¤¹¡£
¡¡¸½ºß HP ¤ÎÃͤò´ÉÍý¤·¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤Ï PlayerController ¥¹¥¯¥ê¥×¥È¤Ç¤¹¡£¤³¤Î¥¹¥¯¥ê¥×¥ÈÆâ¤Ë¡¢Å¬Àڤʥ¿¥¤¥ß¥ó¥°¤Ç
UIManager ¥¹¥¯¥ê¥×¥ÈÆâ¤ËÍÑ°Õ¤·¤¿³Æ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤¤ì¤Ð¡¢HP ¤ÎÃÍʬ¤Î¥é¥¤¥ÕÍÑ¥¢¥¤¥³¥ó¤ÎÀ¸À®¤ò¹Ô¤¤¡¢É½¼¨¤Î¹¹¿·¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤ë¤Ç¤·¤ç¤¦¡£
¡¡¤³¤¦¤¤¤Ã¤¿Àß·×Éôʬ¤ò¸«Ä¾¤¹¤³¤È¤Ç¡¢¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤Æ¤¤¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
½èÍýÁ´ÂΤÎή¤ì¤òÇÄ°®¤Ç¤¤Æ¤¤¤Ê¤¤¤È¡¢À߷פÏÍý²ò¤Ç¤¤Þ¤»¤ó¤Î¤Ç¡¢¥í¥¸¥Ã¥¯¤âÁȤá¤Þ¤»¤ó¡£
¡¡º£²ó¤Î½¤Àµ¤Ç¤Ï¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤¿ºÝ¤Ë¡¢UIManager ¥¹¥¯¥ê¥×¥È¤Î SetPlayerInfo ¥á¥½¥Ã¥É¤Ø¤ÈÌ¿Îá¤ò¹Ô¤¤¡¢¥é¥¤¥ÕÍÑ¥¢¥¤¥³¥ó¤ÎÀ¸À®¤ò¹Ô¤¤¤Þ¤¹¡£
¤Þ¤¿¡¢HP ¤ÎÁý¸º¤Ë±þ¤¸¤Æ¡¢¥é¥¤¥ÕÍÑ¥¢¥¤¥³¥ó¤Îɽ¼¨¤â¹¹¿·¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤â UIManager ¥¹¥¯¥ê¥×¥È¤Î UpdateDisplayLife ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¹¹¿·¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡¤¹¤°¤Ë¥¹¥¯¥ê¥×¥È¤Îµ½Ò¤ò¸«¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢
¤É¤Î¥¿¥¤¥ß¥ó¥°¤ÇÌ¿Îá¤ò¼Â¹Ô¤¹¤ì¤Ð¤¤¤¤¤Î¤«¤ò¼«Ê¬¤Ê¤ê¤Ë¹Í¤¨¤Æ¤«¤é¡¢¥¹¥¯¥ê¥×¥È¤ÎÆâÍƤò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
TODO ¤òÉÕ¤±¤Æ¤¢¤ëÉôʬ¤¬¥Ò¥ó¥È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤Þ¤º¤Ï½¤Àµ°Æ¤ò¸«¤º¤Ë¼«Ê¬¤Î½èÍý¤ò½ñ¤¤¤Æ¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢¥¹¥¯¥ê¥×¥È¤ò½ñ¤¯ÎϤòÍܤ¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
PlayerController.cs
<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹¡£
using System.Collections;
using UnityEngine;
/// <summary>
/// ¥×¥ì¥¤¥ä¡¼¾ðÊó¤Î´ÉÍý¥¯¥é¥¹
/// </summary>
public class PlayerController : MonoBehaviour
{
private int hp; // ¸½ºß¤ÎHpÃÍ
private int bulletCount; // ¸½ºß¤ÎÃÆ¿ôÃÍ
[SerializeField, Header("ºÇÂçHpÃÍ")]
private int maxHp;
[SerializeField, Header("ºÇÂçÃÆ¿ôÃÍ")]
private int maxBullet;
[SerializeField, Header("¥ê¥í¡¼¥É»þ´Ö")]
private float reloadTime;
[Header("ÃƤι¶·âÎÏ")]
public int bulletPower;
[Header("ÃƤÎÏ¢¼Í®ÅÙ")]
public float shootInterval;
[Header("ÃƤμÍÄøµ÷Î¥")]
public float shootRange;
[Header("¥ê¥í¡¼¥Éµ¡Ç½¤Î¥ª¥ó/¥ª¥Õ")]
public bool isReloadModeOn;
[Header("¥ê¥í¡¼¥É¾õÂÖ¤ÎÀ©¸æ")]
public bool isReloading;
////*¡¡ÊÑ¿ô¤ÎÀë¸À¤ò£±¤ÄÄɲá¡*////
[SerializeField]
private UIManager uiManagaer;
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
/// <summary>
/// ÃÆ¿ôÍѤΥץí¥Ñ¥Æ¥£
/// </summary>
public int BulletCount
{
set => bulletCount = Mathf.Clamp(value, 0, maxBullet);
get => bulletCount;
}
//HP ¤âƱ¤¸¤è¤¦¤Ë¥×¥í¥Ñ¥Æ¥£²½¤Ç¤¤Þ¤¹¤¬¡¢º£²ó¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¡£Ä©À路¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
void Start() {
// Debug ÍÑ
SetUpPlayer();
}
/// <summary>
/// ¥×¥ì¥¤¥ä¡¼¾ðÊó¤Î½é´üÀßÄê
/// </summary>
public void SetUpPlayer() {
// maxHp ¤ÎÀßÄ꤬¤¢¤ë¤«³Îǧ¡£¤Ê¤±¤ì¤Ð½é´üÃÍ 10 ¤Ç¥»¥Ã¥È¤·¤Æ hp ¤òÀßÄê
hp = maxHp = maxHp == 0 ? 10 : maxHp;
// maxBullet ¤ÎÀßÄ꤬¤¢¤ë¤«³Îǧ¡£¤Ê¤±¤ì¤Ð½é´üÃÍ 10 ¤Ç¥»¥Ã¥È¤·¤Æ ÃÆ¿ô¤òÀßÄê
BulletCount = maxBullet = maxBullet == 0 ? 10 : maxBullet;
// ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤Î¾¤ÎÀßÄê¤â½é´üÃÍȽÄê¤òºî¤Ã¤¿Êý¤¬ÆþÎÏ˺¤ì¤¬¤Ê¤¯°Â¿´¤Ç¤¹
////* TODO ¤ò¼ÂÁõ¤¹¤ë *////
// UI ¤Ë¥é¥¤¥ÕÍÑ¥¢¥¤¥³¥ó¤òºÇÂçHP¿ô¤À¤±À¸À®¤¹¤ë
¡¡¡¡¡¡¡¡uiManager..SetPlayerInfo(maxHp);
¡¡¡¡¡¡¡¡// TODO ¤½¤Î¤Û¤«¤Î½é´üÀßÄ꤬¤¢¤ì¤Ð¤³¤³¤Ç¹Ô¤¦
////* ¤³¤³¤Þ¤Ç *////
}
/// <summary>
/// HP¤Î·×»»¤È¹¹¿·
/// </summary>
public void CalcHp(int amount) {
hp = Mathf.Clamp(hp += amount, 0, maxHp); // ¥×¥í¥Ñ¥Æ¥£¤òºîÀ®¤·¤Æ¤â¤¤¤¤¤Ç¤¹
Debug.Log("¸½ºß¤ÎHp : " + hp); // UI ¤Ç hp ¤¬³Îǧ¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤é¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Þ¤¹
////* TODO ¤ò¼ÂÁõ¤¹¤ë *////
// HP ɽ¼¨¤Î¹¹¿·
¡¡¡¡¡¡¡¡uiManagaer.UpdateDisplayLife(hp);
////* ¤³¤³¤Þ¤Ç *////
if (hp <= 0) {
Debug.Log("Game Over");
}
}
/// <summary>
/// ÃÆ¿ô¤Î·×»»¤È¹¹¿·
/// </summary>
/// <param name="amout"></param>
public void CalcBulletCount(int amout) {
BulletCount += amout;
Debug.Log("¸½ºß¤ÎÃÆ¿ô : " + BulletCount); // UI ¤ÇÃÆ¿ô¤¬³Îǧ¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤é¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Þ¤¹
// TODO ÃÆ¿ô¤ÎUIɽ¼¨¹¹¿·
}
/// <summary>
/// ÃÆ¿ô¤Î¥ê¥í¡¼¥É
/// </summary>
public IEnumerator ReloadBullet() {
// ¥ê¥í¡¼¥É¾õÂ֤ˤ·¤Æ¡¢ÃƤÎȯ¼Í¤òÀ©¸æ¤¹¤ë
isReloading = true;
// ¥ê¥í¡¼¥É
BulletCount = maxBullet;
Debug.Log("¥ê¥í¡¼¥É"); // UI ¤ÇÃÆ¿ô¤¬³Îǧ¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤é¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Þ¤¹
// TODO ÃÆ¿ô¤ÎUIɽ¼¨¹¹¿·
// TODO SE
// ¥ê¥í¡¼¥É¤ÎÂÔµ¡»þ´Ö
yield return new WaitForSeconds(reloadTime);
// ºÆÅÙ¡¢ÃƤ¬È¯¼Í¤Ç¤¤ë¾õÂ֤ˤ¹¤ë
isReloading = false;
}
private void OnTriggerEnter(Collider other) {
// TODO Ũ¤«¤é¤Î¹¶·â¤Ë¤è¤Ã¤ÆÈïÃƤ·¤¿¾ì¹ç¤Î½èÍý
// TODO ¥Ü¥¹¤äŨ¤Î¹¶·âÈϰϤò´¶ÃΤ·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¥¿¥°¤Ç¤âȽÄꤹ¤ë¤«¡¢¥ì¥¤¥ä¡¼¤òÀßÄꤷ¤Æ²óÈò¤¹¤ë
}
}