¡¡¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò»ÈÍѤ¹¤ë½àÈ÷¤¬À°¤¤¤Þ¤·¤¿¤Î¤Ç¡¢ºÇ¸å¤ËEnemyBase¤ò½¤Àµ¤·¤Æ¤¤¤¤Þ¤¹¡£
Àë¸À¥Õ¥£¡¼¥ë¥É¤Î½¤Àµ¡¢Start¥á¥½¥Ã¥É¤Î½¤Àµ¡¢DropItem¥á¥½¥Ã¥É¤Î½¤Àµ¤¬¼ç¤Ê¹àÌܤǤ¹¡£(¾¤Ë¤â¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢Á´Ê¸·ÇºÜ¤·¤Þ¤¹)
EnemyBase.cs
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyBase : MonoBehaviour
{
//TODO ¥é¥ó¥À¥à¥É¥í¥Ã¥×³ÎΨ·è¤á¤ë»ö
[Header("HP")]
public float hp;
Animator animator;
AudioSource audioSource;
[Header("Ũ¤ÎÈֹ档¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç»ØÄꤹ¤ë")]
public int enemyNo;¡¡¡¡¡¡¡¡// ¡ù¡¡ÄɲÃ
[Header("Ũ¤Î¾ðÊó¡£ÈÖ¹æ¤Ç¸¡º÷¤·¤Æ¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤¹¤ë")]
public EnemyDataList.EnemyData enemyData;¡¡¡¡¡¡¡¡// ¡ù¡¡ÄɲÃ
void Start()
{
// DataBaseManager¤Î´ÉÍý¤·¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËŨ¥Ç¡¼¥¿¤ò¼èÆÀ¤·¤Ë¤¤¤¯
enemyData = DataBaseManager.instance.GetEnemyData(enemyNo); // ¡ù¡¡ÄɲÃ
hp = enemyData.maxHp;¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¡ù¡¡½¤Àµ
animator = GetComponent<Animator>();
audioSource = GetComponent<AudioSource>();
}
/// <summary>
/// ³ÆÉð´ï¤«¤é¤ÎÀÜ¿¨È½Äê¡¢¥À¥á¡¼¥¸½èÍý¡¢»àË´½èÍý
/// Bullet¤Î¤ß¥¿¥°¸¡½Ð̾Á°¸¡½Ð¤Î¾ì¹çDebug.LogɽµÌµ¤·
/// </summary>
/// <param name="other"></param>
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("PlayerWeapon"))
{
Debug.Log(other.gameObject.name + " : ¹¶·âÅö¤¿¤ë");
// other.gameObject(Player¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È)¤Î»ý¤Ä¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò³Îǧ¤·¤Æ¡¢»ØÄꤷ¤¿¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò»ý¤Ä¾ì¹ç¤Ë¤ÏÊÑ¿ô¤Ë¼èÆÀ¤·¤Þ¤¹
if (other.gameObject.TryGetComponent(out WeaponBase weaponBase))
{
Damage(weaponBase);
}
}
}
/// <summary>
/// ¥À¥á¡¼¥¸¼õ¤±¼è¤ê½èÍý
/// </summary>
private void Damage(WeaponBase weaponBase)
{
float damage = weaponBase.CalculateWeaponDamage(enemyData.defensePower); // ¡ù¡¡½¤Àµ
hp -= damage;
// Debug.Log(weaponBase.gameObject.name + "Damage" + gameObject.name + "Hp" + hp); // ¤â¤·¤â¥Ç¥Ð¥Ã¥°¤Ê¤É¤Ç̾Á°¤ò½Ð¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢WeaponBase·Ðͳ¤ÇgameObject.name¤ò¼èÆÀ¤¹¤ì¤Ð¼è¤ì¤ë¤È»×¤¤¤Þ¤¹
animator.SetTrigger("GetHit");
Debug.Log("EnemyGetHitAction");
StartCoroutine(Death());//»àË´¥³¥ë¡¼¥Á¥ó½èÍý
}
/// <summary>
/// »àË´½èÍý¡¡»ØÄêÉÿô¸å¤Ë¾ÃÌÇ
/// ¥³¥ë¡¼¥Á¥ó¤Ë¤è¤ë½èÍý¤Ç»àË´¥¢¥Ë¥á¡¼¥·¥ç¥ó¤È·Ð¸³ÃͼèÆÀ½èÍý
/// </summary>
IEnumerator Death()
{
if (hp <= 0)
{
hp = 0;
GiveEXP();//·Ð¸³ÃÍÅϤ¹½èÍý
ItemDrop();//¥¢¥¤¥Æ¥à¥É¥í¥Ã¥×
animator.SetTrigger("Die");
Debug.Log("DieAction");
yield return new WaitForSeconds(2);
Destroy(this.gameObject, 1f);
Debug.Log(gameObject.name + " : ·âÇË");
}
}
/// <summary>
/// ·Ð¸³ÃͤòEXPmanager¤Ë¤¢¤²¤ë½èÍý
/// </summary>
public void GiveEXP()
{
EXPManager eXPManager = GameObject.Find("EXPManager").GetComponent<EXPManager>();
eXPManager.StockEXP(enemyData.exp);¡¡¡¡¡¡¡¡¡¡// ¡ù¡¡½¤Àµ
Debug.Log(gameObject.name +"·Ð¸³ÃÍ"+ enemyData.exp);¡¡¡¡¡¡¡¡// ¡ù¡¡½¤Àµ
}
/// <summary>
/// Ũ¤¬Åݤ줿»þ¥é¥ó¥À¥à¤Î³ÎΨ¤Ç¡¢ÅÐÏ¿¤·¤¿¥¢¥¤¥Æ¥à¤¬¥é¥ó¥À¥à¤Ç¥É¥í¥Ã¥×
/// </summary>
public void ItemDrop()
{
if (Random.Range(0, 100) <= 100)
{
// ¥¢¥¤¥Æ¥à¤ÎÈÖ¹æ¤ò¼èÆÀ
int itemNo = Random.Range(0, enemyData.dropItemNos.Length); // ¡ù¡¡Âè2°ú¿ô¤ò½¤Àµ
// ¥¢¥¤¥Æ¥à¤ÎÈÖ¹æ¤È¹çÃפ¹¤ë¥×¥ì¥Õ¥¡¥Ö¤Î¥Ç¡¼¥¿¤ò¼èÆÀ¤¹¤ë
GameObject itemPrefab = DataBaseManager.instance.GetDropItemPrefabDate(itemNo); // ¡ù¡¡ÄɲÃ
Vector3 pos = transform.position;
// ¼èÆÀ¤·¤¿¥×¥ì¥Õ¥¡¥Ö¤Î¥Ç¡¼¥¿¤ò»È¤Ã¤Æ¥¢¥¤¥Æ¥à¤òÀ¸À®¤¹¤ë(ÊÑ¿ô¤ò»È¤Ã¤ÆÀ¸À®¤¹¤ë¥¢¥¤¥Æ¥à¤òưŪ¤ËÊѹ¹¤·¤Æ¤¤¤ë)
Instantiate(itemPrefab, new Vector3(pos.x, pos.y + 0.3f, pos.z), Quaternion.identity); // ¡ù¡¡Âè1°ú¿ô¤ò½¤Àµ
}
}
}
¡¡¤Þ¤ºÀë¸À¥Õ¥£¡¼¥ë¥É¤Ç¤Ï¡¢Å¨¤Î¾ðÊó¤ò¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤¹¤ëÊýË¡¤ËÊѹ¹¤·¤¿¤¿¤á¡¢¸ÄÊ̤ÇÀßÄê¤ò¹Ô¤¦É¬Íפ¬¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£
¤½¤Î¤¿¤á¡¢ÉÔÍפˤʤä¿ÊÑ¿ô¤òºï½ü¤·¤Æ¤¤¤Þ¤¹¡£
¡¡Âå¤ï¤ê¤Ë¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤«¤éŨ¤Î¾ðÊó¤ò¾È¹ç¤¹¤ë¤¿¤á¤Ë¡¢Å¨¤ÎÄ̤·ÈÖ¹æ¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÈÖ¹æ¤òÊÑ¿ô¤ÇÍÑ°Õ¤·¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ÇÅÐÏ¿¤·¤Æ¤ª¤¤Þ¤¹¡£
¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËÅÐÏ¿¤·¤¿ÈÖ¹æ¤Ç¾È¹ç¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Î㤨¤ÐSlime¤Î¾ðÊó¤¬Íߤ·¤¤¾ì¹ç¤Ë¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÎŨ¤ÎNo¤¬0¤ÎÈֹ椬Slime¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢
¤³¤³¤Ë¤Ï0¤òÅÐÏ¿¤·¤Þ¤¹¡£
¡¡Start¥á¥½¥Ã¥É¤Ë¤Æ¡¢DataBaseManager¤ÎGetEnemyData¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢¼«Ê¬¤Î»ý¤ÄÈÖ¹æ¤òÅϤ·¤Æ¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤È¾È¹ç¤ò¤·¤Æ¤â¤é¤¤¤Þ¤¹¡£
¤½¤Î¾È¹ç·ë²Ì¤È¤·¤ÆEmenyData¤òÌᤷ¤Æ¤¯¤ì¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤ò¤½¤Î¤Þ¤ÞŨ¤Î¾ðÊó¤ò¤·¤ÆÍøÍѤ·¤Þ¤¹¡£
¡¡Î㤨¤Ð0¤È¤¤¤¦¾ðÊó¤òÅϤ·¤Æ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¤¢¤²¤ë¤È¡¢Slime¤È¤¤¤¦¥Ç¡¼¥¿¤È¤·¤Æ¾ðÊó¤òÌᤷ¤Æ¤¯¤ì¤Þ¤¹¡£
¤³¤ÎÃͤ¬¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÎÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¾ðÊó¤Ç¤¹¤Î¤Ç¡¢Àµ¾ï¤ËŨ¤Î¾ðÊ󤬼èÆÀ¤Ç¤¤ì¤Ð¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÎÍøÍѤ¬½ÐÍè¤Æ¤¤¤Þ¤¹¡£
¡¡¤Þ¤¿Å¨¤Î¥É¥í¥Ã¥×¤¹¤ë¥¢¥¤¥Æ¥à¤Ë¤Ä¤¤¤Æ¤â¡¢DataBaseManager¤ÎGetDropItemPrefabDate¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢»ØÄꤷ¤¿ÈÖ¹æ¤Î¥¢¥¤¥Æ¥à¤Î¥×¥ì¥Õ¥¡¥Ö¾ðÊó¤òÌᤷ¤Æ¤¯¤ì¤Þ¤¹¡£
¤³¤¦¤¹¤ë¤³¤È¤ÇŨ1ÂΤº¤Ä¤Ë¥×¥ì¥Õ¥¡¥Ö¤Î¾ðÊó¤ò¥¢¥µ¥¤¥ó¤¹¤ë¼ê³¤¤¬¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¥×¥ì¥Õ¥¡¥Ö¤Î´ÉÍý¤âDataBaseManager¤ò³Îǧ¤¹¤ì¤ÐºÑ¤à¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¸úΨ²½¤¬¿Þ¤ì¤Þ¤¹¡£
¼Â¹ÔÆ°²è
https://gyazo.com/e3512bbb4b2355cd31036173d78741c0
¡¡EmenyBase¤ËÍÑ°Õ¤·¤Æ¤¢¤ëEnemyData¤ÎÃͤ¬Àµ¾ï¤ËÆþ¤Ã¤Æ¤¤¤ë¤Î¤¬Ê¬¤«¤ê¤Þ¤¹¤Ç¤·¤ç¤¦¤«¡£
¡¡
¡¡¤¢¤È¤Ï³ÆŨ¤Î¥×¥ì¥Õ¥¡¥Ö¤´¤È¤Ë¡¢¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËÅÐÏ¿¤·¤¿ÈÖ¹æ¤òÀßÄꤷ¤Æ¤¢¤²¤ì¤Ð¡¢¤¹¤Ù¤Æ¤ÎŨ¤Î¾ðÊó¤ò¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£