ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2021ǯ03·î21Æü(Æü) 01:42:42ÍúÎò
¡¡Exp ¤¬²Ã»»¤µ¤ì¤¿¤ê¡¢¸º»»¤µ¤ì¤ëºÝ¤Ë¡¢Exp ɽ¼¨¤Î¿ô»ú¤ò°ì½Ö¤Ç¹¹¿·¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢½ù¡¹¤Ë¥«¥¦¥ó¥È¥¢¥Ã¥×¡¢¥«¥¦¥ó¥È¥À¥¦¥ó¤µ¤»¤ë¥¢¥Ë¥á±é½Ð¤òÄɲä·¤Þ¤¹¡£
¡ã¼ÂÁõư²è¡¡Exp ²Ã»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡ã¼ÂÁõư²è¡¡Exp ¸º»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê²¼¤ÎÆâÍÆ¤Ç½çÈ֤˼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤¤Þ¤¹¡£
³ÈÄ¥£²¡¡¡ÝExp Áý¸º»þ¤Î¿ô»ú¤Î¥¢¥Ë¥á±é½Ð¤ÎÄɲáÝ
¡¡¿·¤·¤¤³Ø½¬ÆâÍÆ¤Ï¡¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¡¡À½ºî¤·¤¿¥²¡¼¥à¤òÍ·¤Ó¤Þ¤·¤ç¤¦¡£
¡¡½¾Íè¤Î¥²¡¼¥à¤Ë¤¢¤Ã¤Æ¡¢¤³¤Î¥²¡¼¥à¤Ë¤Ê¤¤±é½Ð¤Ï¤É¤ó¤Ê¤â¤Î¤Ê¤Î¤«¡¢¤É¤ÎÉôʬ¤«¡¢¤½¤ì¤òʬÀϤ·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
µ¤¤Å¤¤¤¿Éôʬ¤ò½ñ¤Î±¤á¤Æ¤ª¤¤¤Æ¡¢¤É¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Çư¤¤¤Æ¤¤¤ë¤Î¤«¡¢É½ÌÌŪ¤Êưºî¤À¤±¤Ç¤Ï¤Ê¤¯¤Æ
¤½¤Îưºî¤Ï¤É¤ó¤Ê¥×¥í¥°¥é¥à¤Î¥í¥¸¥Ã¥¯¤Ê¤Î¤«¡¢¤½¤ÎÉôʬ¤ËÃåÌܤ·¤Æ¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥Ý¡¼¥È¥Õ¥©¥ê¥ª¤È¤·¤Æ¥²¡¼¥à¤òÀ½ºî¤¹¤ë¾å¤ÇÂçÀڤʤΤϡ¢¼«Ê¬¤Îµ¤ÉÕ¤¡¢¤½¤·¤Æ¤É¤ó¤Ê½èÍý¤Ç¤¢¤ë¤«¤ò¹Í¤¨¤ë¤³¤È¤Ç¤¹¡£
¤½¤¦¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¼«Ê¬¤Î¥¹¥¥ë¤Ç¼ÂÁõ¤Ç¤¤ëÆâÍÆ¤Ê¤Î¤«¡¢¿·¤·¤¤µ»½Ñ¤Î½¬ÆÀ¤¬É¬ÍפʤΤ«¡¢¥¤¥á¡¼¥¸¤ò¤·¤Æ¤¤¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡
¡¡¸«±É¤¨Îɤ¯ºîÉʤòºî¤ë¤³¤È¤Ë¤³¤À¤ï¤ê¤ò»ý¤ÄɬÍפϤ¢¤ê¤Þ¤»¤ó¡£(Îɤ¤¤Ë±Û¤·¤¿¤³¤È¤Ï¤Ê¤¤¤Ç¤¹¤¬)
¡¡¤½¤ÎºîÉʤòºîÀ®¤¹¤ë¤¿¤á¤Ë¡¢¤É¤Î¤è¤¦¤Ê³Ø½¬¤ò¹Ô¤Ã¤¿¤Î¤«¡¢¤É¤ó¤ÊÉ÷¤ËÄ´¤Ù¤¿¤Î¤«¡¢²Ì¤¿¤·¤Æ¼ÂÁõ¤¬½ÐÍ褿¤Î¤«¡¢
¶ìÏ«¤·¤¿Éôʬ¤ä¡¢¹Í¤¨È´¤¤¤¿Éôʬ¤ò¤·¤Ã¤«¤ê¤ÈÂè»°¼Ô¤Ø¤ÈÀâÌÀ¤Ç¤¤ë¤³¤È¡¢¼«Ê¬¼«¿È¤Î³Ø½¬¤Î²áÄø¤È¡¢À®Ä¹¤¹¤ë¤¿¤á¤Î¸þ¾å¿´¤¬½ÅÍפǤ¹¡£
¡¡º£²ó¤Ï Exp ¤ÎÃͤ¬¹¹¿·¤µ¤ì¤ëºÝ¤Î±é½Ð¤ò¹Í¤¨¤Æ¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£
¤³¤ì¤Ï¤¢¤¯¤Þ¤Ç¤â¼ÂÁõÎã¤Ç¤¹¤Î¤Ç¡¢¼«Ê¬¤Ç¼ÂÁõ¤·¤¿¤¤ÆâÍÆ¤¬¤¢¤ì¤Ð¡¢¤½¤Á¤é¤òÍ¥À褷¤Æ¤¯¤À¤µ¤¤¡£
¡ã¼ÂÁõÎã¡ä
¡¡¤³¤Á¤é¤ò¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡º£¤Þ¤Ç¤Î¼ÂÁõÎã¤ò¸µ¤Ë¡¢¤É¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤òÁȤळ¤È¤¬½ÐÍè¤ì¤Ð½èÍý¤¬¼ÂÁõ¤Ç¤¤ë¤Î¤«¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤Þ¤¿¡¢¤É¤Î¤è¤¦¤Ê¼ê½ç¤Ç¼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤Ã¤¿¤Î¤«¤â°ì½ï¤Ë¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¿¤¯¤Î¾ì¹ç¡¢É¬ÍפʽèÍý¤¬È½ÌÀ¤·¤¿»þÅÀ¤Ç¡¢³ºÅö¤¹¤ë¥¹¥¯¥ê¥×¥È¤ËÊÑ¿ô¤ä¥á¥½¥Ã¥É¤Î·Á¤Ç½èÍý¤ò¼ÂÁõ¤·¡¢
¤½¤ì¤ò¥¿¥¤¥ß¥ó¥°¤Ë¹ç¤ï¤»¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ½èÍý¤òưºî¤µ¤»¤Æ¤¤¤¿¤È»×¤¤¤Þ¤¹¡£
¡¡¤³¤Î¼ê½ç¤ò¿¶¤ê¤«¤¨¤Ã¤Æ¤ß¤Æ¡¢¤É¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Îή¤ì¤¬É¬ÍפʤΤ«¡¢
¥á¥½¥Ã¥É¡¢ÊÑ¿ô¤òÍѰդ¹¤ë¤Î¤¬Å¬ÀڤǤ¢¤ë¤Î¤«¡¢¼«Ê¬¤Ç¿¼¤¯¹Í¤¨¤Æ¤¤¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡¤É¤Î¥¹¥¯¥ê¥×¥È¤Ë¤É¤Î¤è¤¦¤Ê½èÍý¤òÄɲ乤ì¤Ð¤è¤¤¤«¡¢¥í¥¸¥Ã¥¯¤ò´Þ¤á¤Æ¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
½èÍý¤Î¥´¡¼¥ëÃÏÅÀ¤È¥¹¥¿¡¼¥ÈÃÏÅÀ¡¢·Ò¤¬¤ê¤ò¤É¤Î¤è¤¦¤Ë¹½ÃÛ¤¹¤ì¤Ð¤è¤¤¤«¡¢¤Ê¤É¡¢º£¤Þ¤Ç¤Î½èÍý¤Î¼ÂÁõÎã¤ò»×¤¤½Ð¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡º£²ó¤Ç¤¢¤ì¤Ð¡¢Exp ¤Îɽ¼¨À©¸æ¤ò¹Ô¤Ã¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¡¢¤½¤ÎÃͤòÁàºî¤¹¤ëÌ¿Îá¤ò½Ð¤·¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤¬Âоݤˤʤê¤Þ¤¹¡£
Exp ¤Î²Ã»»¤È¸º»»¤Ï¤½¤ì¤¾¤ìÊ̤Υ¹¥¯¥ê¥×¥ÈÆâ¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤Þ¤º¤Ï¤É¤Î¥¿¥¤¥ß¥ó¥°¤Ç½èÍý¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¤«¤òÇİ®¤·¤Þ¤¹¡£
¡¡¿ô»ú¤Î¥¢¥Ë¥á±é½Ð¤Ï¡¢DOTween ¤Î To ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ç¼ÂÁõ²Äǽ¤Ç¤¹¡£
¤³¤Î½èÍý¤Ç¤Ï¡¢ÊѲ½Á°¤ÎÃͤÈÊѲ½¸å¤ÎÃͤÎξÊý¤ÎÊÑ¿ô¤¬É¬Íפˤʤê¤Þ¤¹¡£
¤³¤ÎÉôʬ¤âÊѹ¹¤¬É¬Íפˤʤê¤Þ¤¹¡£
¡¡¸½ºß¤Î½èÍý¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Ç¤¹¡£
¡ã¸½ºß¤Î½èÍý¤Îή¤ì¡ä
¡¡Àè¤Û¤É¤â¤ªÅÁ¤¨¤·¤¿¤è¤¦¤Ë¡¢£²¤ÎÃʳ¬¤Ç GameData ¤Ë Exp ¤ò²Ã»»¤·¤Æ¤·¤Þ¤¦½èÍý¤òÍøÍѤ¹¤ë¤È¡¢
DOTween.To ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ½èÍý¤Î¼ÂÁõ¤¬¤Ç¤¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¡¢¥²¡¼¥à²èÌ̤Ëɽ¼¨¤¹¤ë·×»»½èÍý¤È¡¢
¼ÂºÝ¤Ë GameData ¥¯¥é¥¹¤Î Exp ¤òÁý¸º¤¹¤ë½èÍý¤È¤Ïʬ¤±¤Æ¹Í¤¨¤Æ¤¤¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¤³¤ì¤òƧ¤Þ¤¨¤Æ¼ÂÁõ¤·¤¿¤¤½èÍý¤Îή¤ì¤È¤·¤Æ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡ã½¤Àµ¤·¤Æ¼ÂÁõ¤·¤¿¤¤½èÍý¤Îή¤ì¡ä
¡¡½èÍý¤Î½çÈÖ¡¢¤ª¤è¤Ó¡¢¥á¥½¥Ã¥É¤ËÂФ·¤ÆÅϤ¹°ú¿ô¤ÎÃͤ¬ÊѤï¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡DisplayTotalExp ¥á¥½¥Ã¥É¤Ë¤Æ Exp ¤ÎÃͤò²èÌ̤Ëɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤ò½¤Àµ¤·¤Æ¡¢Exp ¤ÎÃͤò¥«¥¦¥ó¥È¥¢¥Ã¥×¡¢¥«¥¦¥ó¥È¥À¥¦¥ó¤µ¤»¤Ê¤¬¤éÊѹ¹¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡Exp ¤ÎÃͤòÊѹ¹¤¹¤ë½èÍý¤Ë DOTween ¤Î To ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Þ¤¹¡£
¤³¤ÎÉôʬ¤Ç¤Ï Text ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¿ô»ú¤Î¥¢¥Ë¥á±é½Ð¤ò¹Ô¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¤Î¤Ç¡¢
¤¤¤Þ¤Þ¤Ç¤Î Text ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ø¤Î½èÍý¤Ï°ìÅÙ¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤¯¤À¤µ¤¤¡£
UIManager.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡DOTween ¤Ë¤Ï¿¤¯¤Î¥á¥½¥Ã¥É¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤½¤Î¥á¥½¥Ã¥É¤Ç¤Ï½èÍý¤¬¼ÂÁõ¤Ç¤¤Ê¤¤¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£
º£²ó¤Î¿ô»ú¤ÎÊѹ¹½èÍý¤â¤½¤Î£±¤Ä¤Ç¡¢¤³¤ì¤Ï¡¢DOTween ¤¬»ý¤Ä¥á¥½¥Ã¥É¤Ç¤Ï Tween ½èÍý¤¬¤Ç¤¤Þ¤»¤ó¡£
¡¡¤½¤¦¤¤¤Ã¤¿¥±¡¼¥¹¤ËÈ÷¤¨¤ÆÍѰդµ¤ì¤Æ¤¤¤ë¤â¤Î¤¬¡¢DOTween.To ¥á¥½¥Ã¥É¤Ç¤¹¡£
¤³¤Á¤é¤Î¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤È¡¢¼«ºî¤·¤¿ int ·¿¤Î exp ÊÑ¿ô¤Î¤è¤¦¤Ê¡¢½¾Íè¤Î¥á¥½¥Ã¥É¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¥¯¥é¥¹¤ÎÊÑ¿ô¤Ç¤¢¤Ã¤Æ¤âÀ©¸æ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡ãDOTween.To ¥á¥½¥Ã¥É¤Î°ú¿ô¤ÎÀßÄê¡ä
¡¡½èÍý¤Ï¥é¥à¥À¼°¤Çµ½Ò¤·¤Þ¤¹¡£°ú¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¬Èó¾ï¤Ë¿¤¤¥á¥½¥Ã¥É¤Ç¤¹¤¬¡¢¤³¤Î£´¤Ä¤Î°ú¿ô¤ò»ØÄꤹ¤ì¤ÐÌäÂê¤Ê¤¯½èÍý¤¬Æ°¤¤Þ¤¹¡£
¡¡º£²ó¤Ï¡¢Exp ¤ÎÃͤò¸½ºßÃͤò´ð½àÃͤȤ·¤Æ¡¢²Ã»»¡¦¸º»»¤ò¹Ô¤¤¡¢ºÇ½ªÃͤò¥²¡¼¥à²èÌ̤Ëɽ¼¨¤¹¤ë¡¢¤È¤¤¤¦½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î²Ã»»¤È¸º»»¤Î½èÍý¤Ï¤¢¤¯¤Þ¤Ç¤âɽ¼¨¾å¤Î·×»»¤À¤±¤Ç¤¹¤Î¤Ç¡¢Exp ËÜÍè¤ÎÃͤι¹¿·¤Ï¡¢GameData ¥¯¥é¥¹¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡Exp ¤Î²Ã»»½èÍý¤Ë¤Ä¤¤¤Æ½èÍý¤ÎÆâÍÆ¤ò½¤Àµ¤·¤Þ¤¹¡£
¡¡¥Ý¥¤¥ó¥È¤Ï½èÍý¤Î½çÈ֤Ǥ¹¡£
º£¤Þ¤Ç¤ÏÀè¤ËExp ¤ò²Ã»»¤·¤Æ¤«¤é¡¢¤½¤Î·ë²Ì¤ò UIManager ¦¤Ø¤ÈÁ÷¤Ã¤ÆÉ½¼¨¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤·¤¿¡£
º£²ó¤Ï UIManager Æâ¤Ç·×»»½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï GameData ¤Ë²Ã»»¤¹¤ë½èÍý¤È¤ÏÊ̤ˤʤê¤Þ¤¹¤Î¤Ç¡¢
GameData ¤¬´ÉÍý¤·¤Æ¤¤¤ë Exp ¤Ø¤Î²Ã»»½èÍý¤òÀè¤Ë¹Ô¤Ã¤Æ¤·¤Þ¤¦¤È½èÍý¤Î¤Ä¤¸¤Ä¤Þ¤¬¹ç¤ï¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢UIManager ¤Î½èÍý¤ò¹Ô¤Ã¤Æ¤«¤é¡¢GameData ¤Î Exp ¤ÎÃͤò¹¹¿·¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
¤¤¤Þ¤Þ¤Ç EnemyController ¥¹¥¯¥ê¥×¥È¤Ë¤ª¤¤¤Æ¹Ô¤Ã¤Æ¤¤¤¿ GameData ¤Ø¤Î Exp ¤Î²Ã»»½èÍý¤ò¤³¤Á¤é¤Î¥¹¥¯¥ê¥×¥È¤Ø°Üư¤·¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤ò°Üư¤µ¤»¤Ê¤¤¤È¡¢Exp ²Ã»»¸å¤ÎÃͤǥХì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î»ÈÍѲÄÈݤΥ¿¥¤¥ß¥ó¥°¤¬¥º¥ì¤Þ¤¹¡£
¤½¤ÎÍýͳ¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤º¤Ï½¤Àµ¤»¤º¤Ë»î¤·¤Æ¤ß¤Æ¤â¤¤¤¤¤Ç¤·¤ç¤¦¡£
EnemyGenerator.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡Exp ¤Î²Ã»»½èÍý¤ò EnemyGenerator ¥¹¥¯¥ê¥×¥È¤Ø°Üư¤µ¤»¤Þ¤·¤¿¤Î¤Ç¡¢½ÅÊ£²Ã»»¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¡¢¤³¤Á¤é¤Î½èÍý¤òºï½ü¤·¤Þ¤¹¡£
EnemyController.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡Æ±¤¸¤¯ Exp ¤Î¸º»»»þ¤Î½èÍý¤Ë¤Ä¤¤¤Æ¤â½¤Àµ¤ò¹Ô¤¤¤Þ¤¹¡£
¤³¤Á¤é¤â¤ä¤Ï¤ê¥Ý¥¤¥ó¥È¤Ï½èÍý¤Î½çÈ֤ȡ¢°ú¿ô¤Ç¤¹¡£
BulletSelectManager.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡º£²ó¤Î£´¤Ä¤Î¥¹¥¯¥ê¥×¥È¤Ë¤ª¤¤¤Æ¼ÂÁõ¤·¤Æ¤¤¤ë½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¥³¥á¥ó¥È¤ò³ä°¦¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤é¤Î½èÍý¤Ë¤Ä¤¤¤Æ¡¢¥²¡¼¥à¾å¤Ç¤Îưºî¤È¤·¤Æ¥³¥á¥ó¥È¤òµ½Ò¤Ç¤¤ë¤«¡¢Ä©À路¤Æ¤¯¤À¤µ¤¤¡£
¡¡¼ÂÁõ¤¹¤ëÆâÍÆ¤ò³Îǧ¤·¡¢¥Ç¥Ð¥Ã¥°¤¬É¬ÍפÊÉôʬ¤òÍý²ò¤·¤¿¾å¤Ç½èÍý¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£
²¿¤«½ê¤«¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤ò¼«Ê¬¤Ç£±¤Ä¤º¤Ä³Îǧ¤·¤Æ¤¤¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡ã¼ÂÁõư²è¡¡Exp ²Ã»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡ã¼ÂÁõư²è¡¡Exp ¸º»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡¼¡¤Ï¡¡³ÈÄ¥£³¡¡¡Ý¥¥ã¥é¥â¥Ç¥ë¤Î¥¢¥Ë¥á±é½Ð¤ÎÄɲáݡ¡¤Ç¤¹¡£
¡ã¼ÂÁõư²è¡¡Exp ²Ã»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡ã¼ÂÁõư²è¡¡Exp ¸º»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê²¼¤ÎÆâÍÆ¤Ç½çÈ֤˼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤¤Þ¤¹¡£
³ÈÄ¥£²¡¡¡ÝExp Áý¸º»þ¤Î¿ô»ú¤Î¥¢¥Ë¥á±é½Ð¤ÎÄɲáÝ
¡¡£³¡¥¤É¤Î¤è¤¦¤Ê±é½Ð¤Ë¤¹¤ë¤«¸¡Æ¤¤·¡¢¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤ë ¡¡£´¡¥½¤Àµ¤¬É¬Íפʥ¹¥¯¥ê¥×¥È¤òÆÃÄꤷ¡¢Exp ¤Î¥¢¥Ë¥á±é½Ð½èÍý¤ò¼Â¹Ô¤¹¤ë½èÍý¤òÄɲ乤ë
¡¡¿·¤·¤¤³Ø½¬ÆâÍÆ¤Ï¡¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¡¡¡¦DOTween¤ÎÊä´Öµ¡Ç½¤Î¼ÂÁõÎ㬡¡¡¼DOTween.TO ¥á¥½¥Ã¥É¤òÍøÍѤ·¤¿¿ô»ú¤ÎÊÑÆ°¥¢¥Ë¥á±é½Ð½èÍý¡¼
¡¡À½ºî¤·¤¿¥²¡¼¥à¤òÍ·¤Ó¤Þ¤·¤ç¤¦¡£
¡¡½¾Íè¤Î¥²¡¼¥à¤Ë¤¢¤Ã¤Æ¡¢¤³¤Î¥²¡¼¥à¤Ë¤Ê¤¤±é½Ð¤Ï¤É¤ó¤Ê¤â¤Î¤Ê¤Î¤«¡¢¤É¤ÎÉôʬ¤«¡¢¤½¤ì¤òʬÀϤ·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
µ¤¤Å¤¤¤¿Éôʬ¤ò½ñ¤Î±¤á¤Æ¤ª¤¤¤Æ¡¢¤É¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Çư¤¤¤Æ¤¤¤ë¤Î¤«¡¢É½ÌÌŪ¤Êưºî¤À¤±¤Ç¤Ï¤Ê¤¯¤Æ
¤½¤Îưºî¤Ï¤É¤ó¤Ê¥×¥í¥°¥é¥à¤Î¥í¥¸¥Ã¥¯¤Ê¤Î¤«¡¢¤½¤ÎÉôʬ¤ËÃåÌܤ·¤Æ¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥Ý¡¼¥È¥Õ¥©¥ê¥ª¤È¤·¤Æ¥²¡¼¥à¤òÀ½ºî¤¹¤ë¾å¤ÇÂçÀڤʤΤϡ¢¼«Ê¬¤Îµ¤ÉÕ¤¡¢¤½¤·¤Æ¤É¤ó¤Ê½èÍý¤Ç¤¢¤ë¤«¤ò¹Í¤¨¤ë¤³¤È¤Ç¤¹¡£
¤½¤¦¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¼«Ê¬¤Î¥¹¥¥ë¤Ç¼ÂÁõ¤Ç¤¤ëÆâÍÆ¤Ê¤Î¤«¡¢¿·¤·¤¤µ»½Ñ¤Î½¬ÆÀ¤¬É¬ÍפʤΤ«¡¢¥¤¥á¡¼¥¸¤ò¤·¤Æ¤¤¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡
¡¡¸«±É¤¨Îɤ¯ºîÉʤòºî¤ë¤³¤È¤Ë¤³¤À¤ï¤ê¤ò»ý¤ÄɬÍפϤ¢¤ê¤Þ¤»¤ó¡£(Îɤ¤¤Ë±Û¤·¤¿¤³¤È¤Ï¤Ê¤¤¤Ç¤¹¤¬)
¡¡¤½¤ÎºîÉʤòºîÀ®¤¹¤ë¤¿¤á¤Ë¡¢¤É¤Î¤è¤¦¤Ê³Ø½¬¤ò¹Ô¤Ã¤¿¤Î¤«¡¢¤É¤ó¤ÊÉ÷¤ËÄ´¤Ù¤¿¤Î¤«¡¢²Ì¤¿¤·¤Æ¼ÂÁõ¤¬½ÐÍ褿¤Î¤«¡¢
¶ìÏ«¤·¤¿Éôʬ¤ä¡¢¹Í¤¨È´¤¤¤¿Éôʬ¤ò¤·¤Ã¤«¤ê¤ÈÂè»°¼Ô¤Ø¤ÈÀâÌÀ¤Ç¤¤ë¤³¤È¡¢¼«Ê¬¼«¿È¤Î³Ø½¬¤Î²áÄø¤È¡¢À®Ä¹¤¹¤ë¤¿¤á¤Î¸þ¾å¿´¤¬½ÅÍפǤ¹¡£
¡¡º£²ó¤Ï Exp ¤ÎÃͤ¬¹¹¿·¤µ¤ì¤ëºÝ¤Î±é½Ð¤ò¹Í¤¨¤Æ¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£
¤³¤ì¤Ï¤¢¤¯¤Þ¤Ç¤â¼ÂÁõÎã¤Ç¤¹¤Î¤Ç¡¢¼«Ê¬¤Ç¼ÂÁõ¤·¤¿¤¤ÆâÍÆ¤¬¤¢¤ì¤Ð¡¢¤½¤Á¤é¤òÍ¥À褷¤Æ¤¯¤À¤µ¤¤¡£
¡ã¼ÂÁõÎã¡ä
¡¡¡¦Exp ¤¬²Ã»»¤µ¤ì¤ë¤¿¤Ó¤Ë¡¢Exp ¤Îɽ¼¨¤ò½ù¡¹¤Ë¥«¥¦¥ó¥È¥¢¥Ã¥×¤·¤ÆÉ½¼¨¤¹¤ë ¡¡¡¦Exp ¤¬¸º»»¤µ¤ì¤ë¤¿¤Ó¤Ë¡¢Exp ¤Îɽ¼¨¤ò½ù¡¹¤Ë¥«¥¦¥ó¥È¥À¥¦¥ó¤·¤ÆÉ½¼¨¤¹¤ë
¡¡¤³¤Á¤é¤ò¼ÂÁõ¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡º£¤Þ¤Ç¤Î¼ÂÁõÎã¤ò¸µ¤Ë¡¢¤É¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤òÁȤळ¤È¤¬½ÐÍè¤ì¤Ð½èÍý¤¬¼ÂÁõ¤Ç¤¤ë¤Î¤«¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤Þ¤¿¡¢¤É¤Î¤è¤¦¤Ê¼ê½ç¤Ç¼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤Ã¤¿¤Î¤«¤â°ì½ï¤Ë¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¿¤¯¤Î¾ì¹ç¡¢É¬ÍפʽèÍý¤¬È½ÌÀ¤·¤¿»þÅÀ¤Ç¡¢³ºÅö¤¹¤ë¥¹¥¯¥ê¥×¥È¤ËÊÑ¿ô¤ä¥á¥½¥Ã¥É¤Î·Á¤Ç½èÍý¤ò¼ÂÁõ¤·¡¢
¤½¤ì¤ò¥¿¥¤¥ß¥ó¥°¤Ë¹ç¤ï¤»¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ½èÍý¤òưºî¤µ¤»¤Æ¤¤¤¿¤È»×¤¤¤Þ¤¹¡£
¡¡¤³¤Î¼ê½ç¤ò¿¶¤ê¤«¤¨¤Ã¤Æ¤ß¤Æ¡¢¤É¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Îή¤ì¤¬É¬ÍפʤΤ«¡¢
¥á¥½¥Ã¥É¡¢ÊÑ¿ô¤òÍѰդ¹¤ë¤Î¤¬Å¬ÀڤǤ¢¤ë¤Î¤«¡¢¼«Ê¬¤Ç¿¼¤¯¹Í¤¨¤Æ¤¤¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡¤É¤Î¥¹¥¯¥ê¥×¥È¤Ë¤É¤Î¤è¤¦¤Ê½èÍý¤òÄɲ乤ì¤Ð¤è¤¤¤«¡¢¥í¥¸¥Ã¥¯¤ò´Þ¤á¤Æ¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
½èÍý¤Î¥´¡¼¥ëÃÏÅÀ¤È¥¹¥¿¡¼¥ÈÃÏÅÀ¡¢·Ò¤¬¤ê¤ò¤É¤Î¤è¤¦¤Ë¹½ÃÛ¤¹¤ì¤Ð¤è¤¤¤«¡¢¤Ê¤É¡¢º£¤Þ¤Ç¤Î½èÍý¤Î¼ÂÁõÎã¤ò»×¤¤½Ð¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡º£²ó¤Ç¤¢¤ì¤Ð¡¢Exp ¤Îɽ¼¨À©¸æ¤ò¹Ô¤Ã¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¡¢¤½¤ÎÃͤòÁàºî¤¹¤ëÌ¿Îá¤ò½Ð¤·¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤¬Âоݤˤʤê¤Þ¤¹¡£
Exp ¤Î²Ã»»¤È¸º»»¤Ï¤½¤ì¤¾¤ìÊ̤Υ¹¥¯¥ê¥×¥ÈÆâ¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤Þ¤º¤Ï¤É¤Î¥¿¥¤¥ß¥ó¥°¤Ç½èÍý¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë¤«¤òÇİ®¤·¤Þ¤¹¡£
¡¡¿ô»ú¤Î¥¢¥Ë¥á±é½Ð¤Ï¡¢DOTween ¤Î To ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ç¼ÂÁõ²Äǽ¤Ç¤¹¡£
¤³¤Î½èÍý¤Ç¤Ï¡¢ÊѲ½Á°¤ÎÃͤÈÊѲ½¸å¤ÎÃͤÎξÊý¤ÎÊÑ¿ô¤¬É¬Íפˤʤê¤Þ¤¹¡£
¤³¤ÎÉôʬ¤âÊѹ¹¤¬É¬Íפˤʤê¤Þ¤¹¡£
¡¡¸½ºß¤Î½èÍý¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥í¥¸¥Ã¥¯¤Ç¤¹¡£
¡ã¸½ºß¤Î½èÍý¤Îή¤ì¡ä
¡¡£±¡¥Exp ¤Ø¤Î²Ã»»¡¢¤¢¤ë¤¤¤Ï¸º»»¤¬È¯À¸¤¹¤ë ¡¡£²¡¥GameData ¥¯¥é¥¹¤Î UpdateTotalExp ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¡¢Exp ¤ÎÃͤòÁý¸º¤¹¤ë ¡¡£³¡¥Áý¸º¸å¤ÎÃͤò UIManager ¥¯¥é¥¹¤Î DisplayTotalExp ¥á¥½¥Ã¥É¤Ø¤È°ú¿ô¤ÇÅϤ·¤Æ¡¢¥²¡¼¥à²èÌ̤Ëɽ¼¨¤¹¤ë
¡¡Àè¤Û¤É¤â¤ªÅÁ¤¨¤·¤¿¤è¤¦¤Ë¡¢£²¤ÎÃʳ¬¤Ç GameData ¤Ë Exp ¤ò²Ã»»¤·¤Æ¤·¤Þ¤¦½èÍý¤òÍøÍѤ¹¤ë¤È¡¢
DOTween.To ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ½èÍý¤Î¼ÂÁõ¤¬¤Ç¤¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¡¢¥²¡¼¥à²èÌ̤Ëɽ¼¨¤¹¤ë·×»»½èÍý¤È¡¢
¼ÂºÝ¤Ë GameData ¥¯¥é¥¹¤Î Exp ¤òÁý¸º¤¹¤ë½èÍý¤È¤Ïʬ¤±¤Æ¹Í¤¨¤Æ¤¤¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¤³¤ì¤òƧ¤Þ¤¨¤Æ¼ÂÁõ¤·¤¿¤¤½èÍý¤Îή¤ì¤È¤·¤Æ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡ã½¤Àµ¤·¤Æ¼ÂÁõ¤·¤¿¤¤½èÍý¤Îή¤ì¡ä
¡¡£±¡¥Exp ¤Ø¤Î²Ã»»¡¢¤¢¤ë¤¤¤Ï¸º»»¤¬È¯À¸¤¹¤ë ¡¡£²¡¥Áý¸º¤µ¤»¤ëÃͤò UIManager ¥¯¥é¥¹¤Î DisplayTotalExp ¥á¥½¥Ã¥É¤Ø¤È°ú¿ô¤ÇÅϤ·¤Æ¡¢¤³¤ÎÃæ¤Ç DOTween ¤Îµ¡Ç½¤òÍøÍѤ·¤Æ¡¢¥¢¥Ë¥á±é½Ð¤ò¤·¤Ê¤¬¤é¥²¡¼¥à²èÌ̤Ëɽ¼¨¤¹¤ë ¡¡£³¡¥GameData ¥¯¥é¥¹¤Î UpdateTotalExp ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¡¢Exp ¤ÎÃͤòÁý¸º¤¹¤ë
¡¡½èÍý¤Î½çÈÖ¡¢¤ª¤è¤Ó¡¢¥á¥½¥Ã¥É¤ËÂФ·¤ÆÅϤ¹°ú¿ô¤ÎÃͤ¬ÊѤï¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
£²¡Ý£±¡¥UIManager ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë
¡¡DisplayTotalExp ¥á¥½¥Ã¥É¤Ë¤Æ Exp ¤ÎÃͤò²èÌ̤Ëɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤ò½¤Àµ¤·¤Æ¡¢Exp ¤ÎÃͤò¥«¥¦¥ó¥È¥¢¥Ã¥×¡¢¥«¥¦¥ó¥È¥À¥¦¥ó¤µ¤»¤Ê¤¬¤éÊѹ¹¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡Exp ¤ÎÃͤòÊѹ¹¤¹¤ë½èÍý¤Ë DOTween ¤Î To ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Þ¤¹¡£
¤³¤ÎÉôʬ¤Ç¤Ï Text ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¿ô»ú¤Î¥¢¥Ë¥á±é½Ð¤ò¹Ô¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¤Î¤Ç¡¢
¤¤¤Þ¤Þ¤Ç¤Î Text ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ø¤Î½èÍý¤Ï°ìÅÙ¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤¯¤À¤µ¤¤¡£
UIManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class UIManager : MonoBehaviour
{
[SerializeField]
private CanvasGroup canvasGroupGameClear;
[SerializeField]
private CanvasGroup canvasGroupGameOver;
[SerializeField]
private Text txtGameOver;
[SerializeField]
private Text txtDurability;
[SerializeField]
private Slider slider;
[SerializeField]
private Text txtTotalExp;
[SerializeField]
private FloatingMessage floatingMessagePrefab; // FloatingMessageObj ¥×¥ì¥Õ¥¡¥Ö¡¦¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë
[SerializeField]
private Image imgGameClear;
[SerializeField]
private CanvasGroup canvasGroupRestartImage;
[SerializeField]
private CanvasGroup canvasGroupOpeningFilter;
[SerializeField]
private Image imgGameStart;
[SerializeField]
private CanvasGroup canvasGroupBossAlert;
/// <summary>
/// ¥²¡¼¥à¥¯¥ê¥¢É½¼¨¤ò±£¤¹
/// </summary>
public void HideGameClearSet() {
¡¡¡¡¡¡¡¡// GameClearSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆ©ÌÀÅÙ¤ò 0 ¤Ë¤·¤Æ¸«¤¨¤Ê¤¯¤¹¤ë
canvasGroupGameClear.alpha = 0;
}
/// <summary>
/// ¥²¡¼¥à¥¯¥ê¥¢É½¼¨¤ò¹Ô¤¦
/// </summary>
public void DisplayGameClearSet() {
// GameClearSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆ©ÌÀÅÙ¤ò½ù¡¹¤Ë 1 ¤·¤Æ¥²¡¼¥à¥¯¥ê¥¢É½¼¨
canvasGroupGameClear.DOFade(1.0f, 0.25f)
¡¡¡¡¡¡¡¡¡¡¡¡// DOFade ¥á¥½¥Ã¥É¤Î½èÍý¤¬½ªÎ»¤·¤¿¤é
.OnComplete(() => {
// ¥²¡¼¥à¥¯¥ê¥¢¤Î²èÁü¤ò DOPunchScale ¥á¥½¥Ã¥É¤ÇÍɤ餹
imgGameClear.transform.DOPunchScale(Vector3.one * 2.5f, 0.5f)
// DOPunchScale ¥á¥½¥Ã¥É¤Î½èÍý¤¬½ªÎ»¤·¤¿¤é
¡¡.OnComplete(() => {
// ¥²¡¼¥à¥¯¥ê¥¢¤Î²èÁü¤ò DOShakeScale ¥á¥½¥Ã¥É¤ÇÍɤ餹
imgGameClear.transform.DOShakeScale(0.5f);
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¥²¡¼¥à¥¯¥ê¥¢¤Î²èÁü¤Î¥µ¥¤¥º¤ò 1.5ÇÜ ¤Ë¤¹¤ë
imgGameClear.transform.localScale = Vector3.one * 1.5f;
// ²èÌÌ¥¿¥Ã¥×¤òµö²Ä
canvasGroupGameClear.blocksRaycasts = true;
// Restart¤ÎÅÀÌÇɽ¼¨
canvasGroupRestartImage.DOFade(1.0f, 1.5f).SetEase(Ease.Linear).SetLoops(-1, LoopType.Yoyo);
});
});
}
/// <summary>
/// ¥²¡¼¥à¥ª¡¼¥Ð¡¼É½¼¨¤ò±£¤¹
/// </summary>
public void HideGameOverSet() {
canvasGroupGameOver.alpha = 0;
}
/// <summary>
/// ¥²¡¼¥à¥ª¡¼¥Ð¡¼É½¼¨¤ò¹Ô¤¦
/// </summary>
public void DisplayGameOverSet() {
¡¡¡¡¡¡¡¡// GameClearSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÆ©ÌÀÅÙ¤ò½ù¡¹¤Ë 1 ¤·¤Æ¥²¡¼¥à¥¯¥ê¥¢É½¼¨
canvasGroupGameOver.DOFade(1.0f, 1.0f);
¡¡¡¡¡¡¡¡// ¥²¡¼¥à²èÌ̤Ëɽ¼¨¤¹¤ëʸ»úÎó¤òÍѰդ·¤ÆÂåÆþ
string txt = "Game Over";
¡¡¡¡¡¡¡¡// DOTween ¤Î DOText ¥á¥½¥Ã¥É¤òÍøÍѤ·¤ÆÊ¸»úÎó¤ò£±Ê¸»ú¤º¤Ä½çÈÖ¤ËÆ±¤¸É½¼¨»þ´Ö¤Çɽ¼¨
txtGameOver.DOText(txt, 1.5f).SetEase(Ease.Linear);
}
/// <summary>
/// Âѵ×ÅÙ¤Îɽ¼¨¹¹¿·
/// </summary>
public void DisplayDurability(int durability, int maxDurability) {
// ²èÌ̤ËÂѵ×ÎϤÎÃͤò¡¡¸½ºßÃÍ / ºÇÂçÃÍ¡¡¤Î·Á¼°¤Çɽ¼¨¤¹¤ë
txtDurability.text = durability + " / " + maxDurability;
// ¥²¡¼¥¸¤Îɽ¼¨¤òÂѵ×ÎϤÎÃͤ˹ç¤ï¤»¤Æ¹¹¿·(ºÇ½é¤Ï durability / maxDurability ¤Î·ë²Ì¤¬ 1.0f ¤Ë¤Ê¤ë¤Î¤Ç¡¢¥²¡¼¥¸¤ÏºÇÂçÃͤˤʤë)
slider.DOValue((float)durability / maxDurability, 0.25f);
}
////* ¡ù¡¡¢¡ù¢¤ò½¤Àµ¡¢¤½¤Î²¼¤Ë½èÍý¤òÄɲà *////
/// <summary>
/// TotalExp ¤Îɽ¼¨¹¹¿·
/// </summary>
/// <param name="exp"></param>
public void UpdateDisplayTotalExp(int exp) { // <= ¡ù¡ °ú¿ô¤Î̾Á°¤òÊѹ¹¤·¤Þ¤¹¡£
//txtTotalExp.text = totalExp.ToString(); // <=¡¡¡ù¢ ½èÍý¤ò²¼¤Ë°Ü¤¹¤¿¤á¡¢¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Þ¤¹
¡¡¡¡¡¡¡¡// ¸½ºß¤Î Exp ¤ò¼èÆÀ
int currentExp = GameData.instance.GetTotalExp();
// ·×»»¸å¤Î Exp ¤ò¼èÆÀ
int updateExp = currentExp + exp;
// Exp ¤Îɽ¼¨¤ò DOTween ¤ò»È¤Ã¤Æ¹¹¿·¤·¤Æ¥¢¥Ë¥á±é½Ð
DOTween.To(
() => currentExp,
(x) => {
currentExp = x;
txtTotalExp.text = x.ToString();¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¥²¡¼¥à²èÌ̤˿ô»ú¤Îɽ¼¨¤ò¹¹¿·¤·¤Þ¤¹
},
updateExp,
1.0f);
////* ¤³¤³¤Þ¤Ç *////
}
/// <summary>
/// EXP ÃÍÍÑ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À®
/// </summary>
/// <param name="exp"></param>
public void CreateFlotingMessageToExp(int exp, FloatingMessage.FloatingMessageType floatingMessageType) {
¡¡¡¡¡¡¡¡// ¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À®¡£À¸À®°ÌÃÖ¤Ï TotalExpSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î txtTotalExp ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ(»Ò¥ª¥Ö¥¸¥§¥¯¥È)
FloatingMessage floatingMessage = Instantiate(floatingMessagePrefab, txtTotalExp.transform, false);
¡¡¡¡¡¡¡¡// À¸À®¤·¤¿¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀßÄêÍѥ᥽¥Ã¥É¤ò¼Â¹Ô¡£°ú¿ô¤È¤·¤Æ¡¢Exp ÃÍ¤È¥Õ¥í¡¼¥Èɽ¼¨¤Î¼ïÎà¤ò»ØÄꤷ¤ÆÅϤ¹
floatingMessage.DisplayFloatingMessage(exp, floatingMessageType);
}
/// <summary>
/// ¥ª¡¼¥×¥Ë¥ó¥°±é½Ð¤Î¼Â¹Ô
/// </summary>
/// <returns></returns>
public IEnumerator PlayOpening() {
// ¹õ¤¤¥Õ¥£¥ë¥¿¡¼²èÁü¤ò½ù¡¹¤ËÈóɽ¼¨¤Ë¤·¤Æ¡¢¥²¡¼¥à²èÌ̤ò¸«¤¨¤ë¤è¤¦¤Ë¤¹¤ë
canvasGroupOpeningFilter.DOFade(0.0f, 1.0f)
¡¡¡¡¡¡¡¡¡¡¡¡// ¾åµ¤Î½èÍý¤¬½ªÎ»¤·¤¿¤é
.OnComplete(() => {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¥²¡¼¥à¥¹¥¿¡¼¥È¤Î¥í¥´²èÁü¤òÄ·¤Í¤µ¤»¤Ê¤¬¤é¡¢²èÌ̤βèÌ̳°¤Îº¸Ã¼¤«¤é¥²¡¼¥à²èÌ̤ÎÃæ±û¤Ø°Üư
imgGameStart.transform.DOLocalJump(Vector3.zero, 300.0f, 3, 1.5f).SetEase(Ease.Linear);
});
¡¡¡¡¡¡¡¡// °ì»þ½èÍý¤òÃæÃÇ¡¡=>¡¡¥²¡¼¥à¥¹¥¿¡¼¥È¤Î¥í¥´¤¬²èÌ̤ÎÃæ±û¤ÇÄä»ß¤·¤¿¤Þ¤Þ¤Ë¤Ê¤ë
yield return new WaitForSeconds(3.5f);
¡¡¡¡¡¡¡¡// ¥²¡¼¥à¥¹¥¿¡¼¥È¤Î¥í¥´²èÁü¤òÄ·¤Í¤µ¤»¤Ê¤¬¤é¡¢¥²¡¼¥à²èÌ̤ÎÃæ±û¤«¤é²èÌ̤α¦Ã¼¤Ø°Üư¤·¤Æ²èÌ̳°¤Ë
imgGameStart.transform.DOLocalJump(new Vector3(1500, 0, 0), 200.0f, 3, 1.5f).SetEase(Ease.Linear);
}
/// <summary>
/// ¥Ü¥¹¤Î·Ù¹ðÍѤÎɽ¼¨¤ò±£¤¹
/// </summary>
public void HideBossAlertSet() {
canvasGroupBossAlert.transform.parent.gameObject.SetActive(false);
}
/// <summary>
/// ¥Ü¥¹¤Î·Ù¹ð±é½Ð¤ò¼Â¹Ô
/// </summary>
public IEnumerator PlayBossAlert() {
// ¥Ü¥¹ÍѤΠBGM ºÆÀ¸
SoundManager.instance.PlayBGM(SoundDataSO.BgmType.Boss);
// TODO ¥Ü¥¹Á°¤Î·Ù¹ð¥Ü¥¤¥¹ºÆÀ¸
canvasGroupBossAlert.transform.parent.gameObject.SetActive(true);
canvasGroupBossAlert.DOFade(1.0f, 0.5f).SetLoops(6, LoopType.Yoyo);
yield return new WaitForSeconds(3.0f);
canvasGroupBossAlert.DOFade(0.0f, 0.25f);
yield return new WaitForSeconds(0.25f);
canvasGroupBossAlert.transform.parent.gameObject.SetActive(false);
}
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
£²¡Ý£²¡¥¡ãDOTween¤ÎÊä´Öµ¡Ç½¤Î¼ÂÁõÎ㬡¡¡¼DOTween.TO ¥á¥½¥Ã¥É¤òÍøÍѤ·¤¿¿ô»ú¤ÎÊÑÆ°¥¢¥Ë¥á±é½Ð½èÍý¡¼¡ä
¡¡DOTween ¤Ë¤Ï¿¤¯¤Î¥á¥½¥Ã¥É¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤½¤Î¥á¥½¥Ã¥É¤Ç¤Ï½èÍý¤¬¼ÂÁõ¤Ç¤¤Ê¤¤¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£
º£²ó¤Î¿ô»ú¤ÎÊѹ¹½èÍý¤â¤½¤Î£±¤Ä¤Ç¡¢¤³¤ì¤Ï¡¢DOTween ¤¬»ý¤Ä¥á¥½¥Ã¥É¤Ç¤Ï Tween ½èÍý¤¬¤Ç¤¤Þ¤»¤ó¡£
¡¡¤½¤¦¤¤¤Ã¤¿¥±¡¼¥¹¤ËÈ÷¤¨¤ÆÍѰդµ¤ì¤Æ¤¤¤ë¤â¤Î¤¬¡¢DOTween.To ¥á¥½¥Ã¥É¤Ç¤¹¡£
¤³¤Á¤é¤Î¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤È¡¢¼«ºî¤·¤¿ int ·¿¤Î exp ÊÑ¿ô¤Î¤è¤¦¤Ê¡¢½¾Íè¤Î¥á¥½¥Ã¥É¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¥¯¥é¥¹¤ÎÊÑ¿ô¤Ç¤¢¤Ã¤Æ¤âÀ©¸æ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡ãDOTween.To ¥á¥½¥Ã¥É¤Î°ú¿ô¤ÎÀßÄê¡ä
DOTween.To
(
// ²¿¤Ë(getter),
// ²¿¤ò(setter)¡¡¤³¤Î x ¤ÏÊÑ¿ô¤Ê¤Î¤Ç¼«Í³¤Ê̾Á°¤ËÀßÄê¤Ç¤¤ë,
// ºÇ½ªÅª¤ÊÃÍ(end value),
// ºÇ½ªÃͤËÊѲ½¤¹¤ë¤Þ¤Ç¤Î»þ´Ö(duration)
);
¡¡½èÍý¤Ï¥é¥à¥À¼°¤Çµ½Ò¤·¤Þ¤¹¡£°ú¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¬Èó¾ï¤Ë¿¤¤¥á¥½¥Ã¥É¤Ç¤¹¤¬¡¢¤³¤Î£´¤Ä¤Î°ú¿ô¤ò»ØÄꤹ¤ì¤ÐÌäÂê¤Ê¤¯½èÍý¤¬Æ°¤¤Þ¤¹¡£
¡¡º£²ó¤Ï¡¢Exp ¤ÎÃͤò¸½ºßÃͤò´ð½àÃͤȤ·¤Æ¡¢²Ã»»¡¦¸º»»¤ò¹Ô¤¤¡¢ºÇ½ªÃͤò¥²¡¼¥à²èÌ̤Ëɽ¼¨¤¹¤ë¡¢¤È¤¤¤¦½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î²Ã»»¤È¸º»»¤Î½èÍý¤Ï¤¢¤¯¤Þ¤Ç¤âɽ¼¨¾å¤Î·×»»¤À¤±¤Ç¤¹¤Î¤Ç¡¢Exp ËÜÍè¤ÎÃͤι¹¿·¤Ï¡¢GameData ¥¯¥é¥¹¤Ç¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
// Exp ¤Îɽ¼¨¤ò DOTween ¤ò»È¤Ã¤Æ¹¹¿·¤·¤Æ¥¢¥Ë¥á±é½Ð
DOTween.To(
¡¡¡¡() => currentExp,
(x) => {
¡¡¡¡¡¡ currentExp = x;
txtTotalExp.text = x.ToString();
},
updateExp,
1.0f);
£²¡Ý£³¡¥EnemyGenerator ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë
¡¡Exp ¤Î²Ã»»½èÍý¤Ë¤Ä¤¤¤Æ½èÍý¤ÎÆâÍÆ¤ò½¤Àµ¤·¤Þ¤¹¡£
¡¡¥Ý¥¤¥ó¥È¤Ï½èÍý¤Î½çÈ֤Ǥ¹¡£
º£¤Þ¤Ç¤ÏÀè¤ËExp ¤ò²Ã»»¤·¤Æ¤«¤é¡¢¤½¤Î·ë²Ì¤ò UIManager ¦¤Ø¤ÈÁ÷¤Ã¤ÆÉ½¼¨¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤·¤¿¡£
º£²ó¤Ï UIManager Æâ¤Ç·×»»½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¤³¤ì¤Ï GameData ¤Ë²Ã»»¤¹¤ë½èÍý¤È¤ÏÊ̤ˤʤê¤Þ¤¹¤Î¤Ç¡¢
GameData ¤¬´ÉÍý¤·¤Æ¤¤¤ë Exp ¤Ø¤Î²Ã»»½èÍý¤òÀè¤Ë¹Ô¤Ã¤Æ¤·¤Þ¤¦¤È½èÍý¤Î¤Ä¤¸¤Ä¤Þ¤¬¹ç¤ï¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢UIManager ¤Î½èÍý¤ò¹Ô¤Ã¤Æ¤«¤é¡¢GameData ¤Î Exp ¤ÎÃͤò¹¹¿·¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
¤¤¤Þ¤Þ¤Ç EnemyController ¥¹¥¯¥ê¥×¥È¤Ë¤ª¤¤¤Æ¹Ô¤Ã¤Æ¤¤¤¿ GameData ¤Ø¤Î Exp ¤Î²Ã»»½èÍý¤ò¤³¤Á¤é¤Î¥¹¥¯¥ê¥×¥È¤Ø°Üư¤·¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤ò°Üư¤µ¤»¤Ê¤¤¤È¡¢Exp ²Ã»»¸å¤ÎÃͤǥХì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î»ÈÍѲÄÈݤΥ¿¥¤¥ß¥ó¥°¤¬¥º¥ì¤Þ¤¹¡£
¤½¤ÎÍýͳ¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤º¤Ï½¤Àµ¤»¤º¤Ë»î¤·¤Æ¤ß¤Æ¤â¤¤¤¤¤Ç¤·¤ç¤¦¡£
EnemyGenerator.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyGenerator : MonoBehaviour
{
[SerializeField, Header("¥¨¥Í¥ß¡¼¤Î¥×¥ì¥Õ¥¡¥Ö")]
private EnemyController enemyObjPrefab;
[SerializeField, Header("¥¨¥Í¥ß¡¼À¸À®¤Þ¤Ç¤Î½àÈ÷»þ´Ö")]
public float preparateTime;
private int generateCount; // À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô¤ò¥«¥¦¥ó¥È¤¹¤ë¤¿¤á¤ÎÊÑ¿ô
private float timer; // ½àÈ÷»þ´Ö¤Î·×¬ÍѤÎÊÑ¿ô
private GameManager gameManager;
[Header("¥¨¥Í¥ß¡¼¤ÎºÇÂçÀ¸À®¿ô")]
public int maxGenerateCount;
[Header("¥¨¥Í¥ß¡¼¤ÎÀ¸À®´°Î»´ÉÍýÍÑ")]
public bool isGenerateEnd;
[Header("¥Ü¥¹Æ¤È²´ÉÍýÍÑ")]
public bool isBossDestroyed;
[Header("¥¨¥Í¥ß¡¼¤Î¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È")]
public EnemyDataSO enemyDataSO;
// Normal ¥¿¥¤¥×¤Î¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤À¤±ÂåÆþ¤µ¤ì¤Æ¤¤¤ë List
private List<EnemyDataSO.EnemyData> normalEnemyDatas = new List<EnemyDataSO.EnemyData>();
// Boss ¥¿¥¤¥×¤Î¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤À¤±ÂåÆþ¤µ¤ì¤Æ¤¤¤ë List
private List<EnemyDataSO.EnemyData> bossEnemyDatas = new List<EnemyDataSO.EnemyData>();
[Header("¥¨¥Í¥ß¡¼°ÜưÍѤΥ¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È")]
public MoveEventSO moveEventSO;
[SerializeField, Header("À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¥ê¥¹¥È")]
private List<EnemyController> enemiesList = new List<EnemyController>();
/// <summary>
/// EnemyGenerator ¤ÎÀßÄê
/// </summary>
/// <param name="gameManager"></param>
public void SetUpEnemyGenerator(GameManager gameManager) {
// EnemyGenerator ¥¹¥¯¥ê¥×¥È¤Î gameManager ÊÑ¿ô¤Ë¡¢°ú¿ô¤ÇÆÏ¤¤¤¿ GameManager ¥¹¥¯¥ê¥×¥È¤Î¾ðÊó¤òÂåÆþ
this.gameManager = gameManager;
// °ú¿ô¤Ç»ØÄꤷ¤¿¥¨¥Í¥ß¡¼¤Î¥¿¥¤¥×¤Î¥ê¥¹¥È¤òºîÀ®
normalEnemyDatas = GetEnemyTypeList(EnemyType.Normal);
bossEnemyDatas = GetEnemyTypeList(EnemyType.Boss);
// GameData ¤è¤ê¥¨¥Í¥ß¡¼¤ÎºÇÂçÀ¸À®¿ô¤ò¼èÆÀ
maxGenerateCount = GameData.instance.GetMaxGenerateCount();
}
/// <summary>
/// ¥¨¥Í¥ß¡¼À¸À®¤Î½àÈ÷
/// </summary>
private void PreparateGenerateEnemy() {
// »þ´Ö¤Î·×¬
timer += Time.deltaTime;
// ½àÈ÷»þ´Ö¤òͤ¨¤¿¤é
if (timer >= preparateTime) {
// ¼¡²ó¤Î»þ´Ö¤Î·×¬¤ò¹Ô¤¦¤¿¤á¤Ë¥ê¥»¥Ã¥È
timer = 0;
// ¥¨¥Í¥ß¡¼¤ÎÀ¸À®
GenerateEnemy();
// À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô¤ò¥«¥¦¥ó¥È¥¢¥Ã¥×
generateCount++;
Debug.Log("À¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô : " + generateCount);
¡¡¡¡¡¡¡¡¡¡¡¡// º£¤Þ¤Ç¤ËÀ¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¿ô¤¬¡¢¥¨¥Í¥ß¡¼¤ÎºÇÂçÀ¸À®¿ô¤ÎÃÍ¤ÈÆ±¤¸¤«Ä¶¤¨¤¿¤é
¡¡¡¡¡¡¡¡¡¡¡¡if (generateCount >= maxGenerateCount) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// À¸À®´°Î»¤Î¾õÂ֤ˤ¹¤ë = Update ¥á¥½¥Ã¥É¤Ç¤³¤ÎÃͤòÍøÍѤ·¤Æ¡¢À¸À®´°Î»¾õÂ֤ˤʤ俤éÀ¸À®¤Î½àÈ÷½èÍý¤¬¼Â¹Ô¤µ¤ì¤Ê¤¤¤è¤¦¤ËÀ©¸æ¤¹¤ë
isGenerateEnd = true;
Debug.Log("À¸À®´°Î»");
// ¥Ü¥¹¤ÎÀ¸À®
StartCoroutine(GenerateBoss());
}
}
}
/// <summary>
/// ¥¨¥Í¥ß¡¼¤ÎÀ¸À®
/// </summary>
private void GenerateEnemy(EnemyType enemyType = EnemyType.Normal) {
¡¡¡¡¡¡¡¡// ¥é¥ó¥À¥à¤ÊÃͤòÂåÆþ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤òÀë¸À
¡¡¡¡¡¡¡¡int randomEnemyNo;
¡¡¡¡¡¡¡¡// EnemyData ¤òÂåÆþ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤òÀë¸À
EnemyDataSO.EnemyData enemyData = null;
// EnemyType ¤Ë¹ç¤ï¤»¤ÆÀ¸À®¤¹¤ë¥¨¥Í¥ß¡¼¤Î¼ïÎà¤ò·èÄꤷ¡¢¤½¤Î¥¨¥Í¥ß¡¼¤Î¼ïÎऴ¤È¤Î¥ê¥¹¥È¤«¤é¥é¥ó¥À¥à¤Ê EnemyData ¤ò¼èÆÀ
switch (enemyType) {
case EnemyType.Normal:
randomEnemyNo = Random.Range(0, normalEnemyDatas.Count);
enemyData = normalEnemyDatas[randomEnemyNo];
break;
case EnemyType.Boss:
randomEnemyNo = Random.Range(0, bossEnemyDatas.Count);
enemyData = bossEnemyDatas[randomEnemyNo];
break;
}
// ¥×¥ì¥Õ¥¡¥Ö¤«¤é¥¨¥Í¥ß¡¼¤Î¥¯¥í¡¼¥ó¤òÀ¸À®¤¹¤ë¡£À¸À®°ÌÃÖ¤Ï EnemyGenerator ¤Î°ÌÃÖ¡£Ìá¤êÃͤÎÃÍ¤Ï EnemyController ·¿¤Ë¤Ê¤ë
EnemyController enemyController = Instantiate(enemySetPrefab, transform, false); // <= ¡ù¡¡º¸ÊÕ¤Ë EnemyController ·¿¤ÎÊÑ¿ô¤òÍѰդ·¤Æ¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤µ¤ì¤¿¥¨¥Í¥ß¡¼¤Î¾ðÊó¤òÌá¤êÃͤǼõ¤±¼è¤ë
// EnemyController ¥¹¥¯¥ê¥×¥È¤Î SetUpEnemy ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¡¡=>¡¡Start ¥á¥½¥Ã¥É¤ÎÂå¤ï¤ê¤Ë¤Ê¤ë½èÍý
enemyController.SetUpEnemy(enemyData);
// Boss °Ê³°¤Ç¤âÄɲÃÀßÄê¤ò¹Ô¤¦
enemyController.AdditionalSetUpEnemy(this, gameManager.bulletSelectManager.GetBulletData(enemyData.bulletType);
// List ¤ËÀ¸À®¤·¤¿¥¨¥Í¥ß¡¼¤Î¾ðÊó¤òÄɲÃ
enemiesList.Add(enemyController);
}
void Update() {
// À¸À®´°Î»¤Î¾õÂ֤ˤʤ俤éÀ¸À®½èÍý¤ò¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
if (isGenerateEnd) {
return;
}
¡¡¡¡¡¡¡¡// GameManager ¥¹¥¯¥ê¥×¥È¤Î½àÈ÷¤¬´°Î»¤·¤Æ¤¤¤Ê¤¤¤¦¤Á¤ÏÀ¸À®½èÍý¤ò¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
if (!gameManager.isSetUpEnd) {
return;
}
¡¡¡¡¡¡¡¡// ¥²¡¼¥à½ªÎ»¤Î¾õÂ֤ǤϤʤ¤¤Ê¤é
if (!gameManager.isGameUp) {
// ¥¨¥Í¥ß¡¼À¸À®¤Î½àÈ÷
PreparateGenerateEnemy();
}
}
/// <summary>
/// ¥Ü¥¹¤ÎÀ¸À®
/// </summary>
private IEnumerator GenerateBoss() {
// ¥Ü¥¹½Ð¸½¤Î·Ù¹ð±é½Ð
yield return StartCoroutine(gameManager.uiManager.PlayBossAlert());
// ¥Ü¥¹À¸À®
GenerateEnemy(EnemyType.Boss);
}
/// <summary>
/// ¥Ü¥¹Æ¤È²¾õÂÖ¤ÎÀÚ¤êÂØ¤¨
/// </summary>
/// <param name="isSwitch"></param>
public void SwitchBossDestroyed(bool isSwitch) {
// ¥Ü¥¹¤ÎƤȲ¾õÂÖ¤òÀÚ¤êÂØ¤¨
isBossDestroyed = isSwitch;
Debug.Log("¥Ü¥¹Æ¤È²");
// ¥Ü¥¹Æ¤È²¤Ë¹ç¤ï¤»¤Æ¡¢¥²¡¼¥à½ªÎ»¤Î¾õÂÖ¤ËÀÚ¤êÂØ¤¨¤ë
gameManager.SwitchGameUp(isBossDestroyed);
// ¥²¡¼¥à¥¯¥ê¥¢¤Î½àÈ÷
gameManager.PreparateGameClear();
}
/// <summary>
/// °ú¿ô¤Ç»ØÄꤵ¤ì¤¿¥¨¥Í¥ß¡¼¤Î¼ïÎà¤ÎList¤òºîÀ®¤·¡¢ºîÀ®¤·¤¿ÃͤòÌ᤹
/// </summary>
/// <param name="enemyType"></param>
/// <returns></returns>
private List<EnemyDataSO.EnemyData> GetEnemyTypeList(EnemyType enemyType) {
List<EnemyDataSO.EnemyData> enemyDatas = new List<EnemyDataSO.EnemyData>();
// °ú¿ô¤Î¥¿¥¤¥×¤Î¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤À¤±¤òÃê½Ð¤·¤Æ enemyDatas ¥ê¥¹¥È¤Ë EnemyData ¤òÄɲ䷤ơ¢List ¤òºîÀ®¤·¤Æ¤¤¤¯
for (int i = 0; i < enemyDataSO.enemyDataList.Count; i++) {
if (enemyDataSO.enemyDataList[i].enemyType == enemyType) {
enemyDatas.Add(enemyDataSO.enemyDataList[i]);
}
}
// Ãê½Ð½èÍý¤Î·ë²Ì¤òÌ᤹
return enemyDatas;
}
/// <summary>
/// TotalExp ¤Îɽ¼¨¹¹¿·½àÈ÷
/// </summary>
/// <param name="exp"></param>
public void PreparateDisplayTotalExp(int exp) {
// GameManager ¥¹¥¯¥ê¥×¥È¤«¤é UIManager ¥¹¥¯¥ê¥×¥È¤Î UpdateDisplayTotalExp ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë
gameManager.uiManager.UpdateDisplayTotalExp(exp);
// GameManager ¥¹¥¯¥ê¥×¥È¤«¤é UIManager ¥¹¥¯¥ê¥×¥È¤Î CreateFlotingMessageToExp ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¡£°ú¿ô¤È¤·¤Æ exp ¤È¥Õ¥í¡¼¥Èɽ¼¨¤Î¼ïÎà¤òÅϤ¹
gameManager.uiManager.CreateFlotingMessageToExp(exp, FloatingMessage.FloatingMessageType.GetExp);
////* ½èÍý¤òÄɲ乤ë *////
// Exp ¤ò TotalExp ¤Ë²Ã»»
GameData.instance.UpdateTotalExp(exp);
////* ¤³¤³¤Þ¤Ç *////
// »ÈÍѲÄǽ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î³Îǧ¤È¹¹¿·
gameManager.bulletSelectManager.JugdeOpenBullets();
}
/// <summary>
/// ¥×¥ì¥¤¥ä¡¼¤È¥¨¥Í¥ß¡¼¤È¤Î°ÌÃÖ¤«¤éÊý¸þ¤òȽÄꤹ¤ë½àÈ÷
/// </summary>
/// <returns></returns>
public Vector3 PreparateGetPlayerDirection(Vector3 enemyPos) {
return gameManager.GetPlayerDirection(enemyPos);
}
/// <summary>
/// enemiesList ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥¨¥Í¥ß¡¼¤Î¤¦¤Á¡¢¥ê¥¹¥È¤Ë»Ä¤Ã¤Æ¤¤¤ë¥¨¥Í¥ß¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤·¡¢enemiesList ¤ò¥¯¥ê¥¢¤¹¤ë
/// </summary>
public void ClearEnemiesList() {
// enemiesList ¤ÎÍ×ÁÇ(Ãæ¿È)¤ò£±¤Ä¤º¤Ä½çÈ֤ˡ¢Í×ÁǤκÇÂçÃͤˤʤë¤Þ¤ÇȽÄꤷ¤Æ¤¤¤¯
for (int i = 0; i < enemiesList.Count; i++) {
¡¡¡¡¡¡¡¡¡¡¡¡// Í×ÁǤ¬¶õ¤Ç¤Ï¤Ê¤¤(¥×¥ì¥¤¥ä¡¼¤ËÇ˲õ¤µ¤ì¤º¤Ë¥²¡¼¥à²èÌ̤˻ĤäƤ¤¤ë)¤Ê¤é
if (enemiesList[i] != null) {
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// ¤½¤Î¥¨¥Í¥ß¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë
Destroy(enemiesList[i].gameObject);
}
}
¡¡¡¡¡¡¡¡// ¥ê¥¹¥È¤ò¥¯¥ê¥¢(Í×ÁǤ¬²¿¤â¤Ê¤¤¾õÂÖ)¤Ë¤¹¤ë
enemiesList.Clear();
}
/// <summary>
/// °ì»þ¥ª¥Ö¥¸¥§¥¯¥È(¥Ð¥ì¥Ã¥È¡¢¥¨¥Õ¥§¥¯¥È¤Ê¤É)¤ò¤¹¤Ù¤ÆÇË´þ(ÍøÍѾõ¶·¤Ë±þ¤¸¤Æ¡¢¡¤«¢¤Î¤¤¤º¤ì¤«¤Î½èÍý¤ò¼ÂÁõ¤¹¤ë)
/// </summary>
public void DestroyTemporaryObjectContainer() {
// ¡ TemporaryObjectContainer ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë(¥×¥í¥Ñ¥Æ¥£¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç)
Destroy(TransformHelper.TemporaryObjectContainerTran.gameObject);
// ¢ TemporaryObjectContainer ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë(¥×¥í¥Ñ¥Æ¥£¤òÍøÍѤ·¤Æ¤¤¤Ê¤¤¾ì¹ç)
Destroy(TransformHelper.GetTemporaryObjectContainerTran().gameObject);
}
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
£²¡Ý£´¡¥EnemyController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë
¡¡Exp ¤Î²Ã»»½èÍý¤ò EnemyGenerator ¥¹¥¯¥ê¥×¥È¤Ø°Üư¤µ¤»¤Þ¤·¤¿¤Î¤Ç¡¢½ÅÊ£²Ã»»¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¡¢¤³¤Á¤é¤Î½èÍý¤òºï½ü¤·¤Þ¤¹¡£
EnemyController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using UnityEngine.Events;
[RequireComponent(typeof(CapsuleCollider2D))]
public class EnemyController : MonoBehaviour
[Header("¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¾ðÊó")]
public EnemyDataSO.EnemyData enemyData; // SetUpEnemy ¥á¥½¥Ã¥É¤Ë¤Æ°ú¿ô¤È¤·¤Æ¼õ¤±¤È¤Ã¤¿¥¨¥Í¥ß¡¼¤Î¥Ç¡¼¥¿¤òÂåÆþ¤¹¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢¿¶¤ëÉñ¤¤¤¬ÊѤï¤ë
[SerializeField]
private Image imgEnemy; // ¥¨¥Í¥ß¡¼¤Î²èÁü¤ÎÀßÄêÍÑ¡¡¡¡¡¡
[SerializeField]
private Slider slider;
[SerializeField]
private GameObject bulletEffectPrefab; // ¥Ò¥Ã¥È±é½ÐÍѤΥ¨¥Õ¥§¥¯¥È¤Î¥×¥ì¥Õ¥¡¥Ö¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë
[SerializeField]
private GameObject enemybulletPrefab; // EnemyBullet ¥×¥ì¥Õ¥¡¥Ö¡¦¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë
[SerializeField, Header("¥Õ¥í¡¼¥Èɽ¼¨¤ò¹Ô¤¦°ÌÃÖ¾ðÊó")]
private Transform floatingDamageTran;
[SerializeField]
private FloatingMessage floatingMessagePrefab; // FloatingMessageObj ¥×¥ì¥Õ¥¡¥Ö¡¦¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤·¤ÆÅÐÏ¿¤¹¤ë
private int maxHp; // HP¤ÎºÇÂçÃͤòÂåÆþ¤¹¤ëÊÑ¿ô
private int hp; // ¥¨¥Í¥ß¡¼¤ÎHP¡£EnemyData ¤ÇHp¤ÎÃͤ¬¼èÆÀ¤Ç¤¤ë¤Î¤Ç¡¢¤½¤ì¤òÂåÆþ¤¹¤ë¡£public ¤Ë¤·¤Æ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ÇÀßÄꤹ¤ëɬÍפʤ·
private EnemyGenerator enemyGenerator; // EnemyGenerator ¤òÍøÍѤ¹¤ë¤¿¤á¤ÎÊÑ¿ô
private UnityAction<Transform, float> moveEvent; // UnityAction<Transform, float> ·¿¤Î moveEvent ÊÑ¿ô¤ÈÆÉ¤à¡£¤³¤³¤Ë¥¨¥Í¥ß¡¼¤Î°ÜưÊýË¡¤Ë±þ¤¸¤¿°ÜưÍѤΥ᥽¥Ã¥É¤òÅÐÏ¿¤¹¤ë
/// <summary>
/// ¥¨¥Í¥ß¡¼¤ÎÀßÄê
/// </summary>
¡¡¡¡public void SetUpEnemy(EnemyDataSO.EnemyData enemyData) {
¡¡¡¡¡¡¡¡// °ú¿ô¤ÇÆÏ¤¤¤¿ EnemyData ¤òÂåÆþ¤¹¤ë
this.enemyData = enemyData;
// ¥Ü¥¹¤Ç¤Ï¤Ê¤¤¾ì¹ç
if (this.enemyData.enemyType != EnemyType.Boss) {
// ¥¨¥Í¥ß¡¼¤Î X ¼´(º¸±¦)¤Î°ÌÃÖ¤ò¡¢¥²¡¼¥à²èÌ̤˼ý¤Þ¤ëÈϰϤǥé¥ó¥À¥à¤Ê°ÌÃÖ¤ËÊѹ¹
transform.localPosition = new Vector3(transform.localPosition.x + Random.Range(-650, 650), transform.localPosition.y, 0);
} else {
// ¥Ü¥¹¤Î°ÌÃÖ¤ò½ù¡¹¤Ë²¼Êý¸þ¤ËÊѹ¹
transform.DOLocalMoveY(transform.localPosition.y - 500, 3.0f);
// ¥Ü¥¹¤Î¾ì¹ç¡¢¥µ¥¤¥º¤òÂ礤¯¤¹¤ë
transform.localScale = Vector3.one * 2.0f;
// Hp¥²¡¼¥¸¤Î°ÌÃÖ¤ò¹â¤¤°ÌÃ֤ˤ¹¤ë
slider.transform.localPosition = new Vector3(0, 150, 0);
}
// ²èÁü¤ò EnemyData ¤Î²èÁü¤Ë¤¹¤ë¡¡=>¡¡¤³¤³¤Ç¥¨¥Í¥ß¡¼¤´¤È¤Î²èÁü¤ËÊѹ¹¤¹¤ë
imgEnemy.sprite = this.enemyData.enemySprite;
// EnemyData ¤è¤ê Hp ¤ÎÃͤòºÇÂçÃͤȤ·¤ÆÂåÆþ
maxHp = this.enemyData.hp;
// hp ¤òÀßÄê
hp = maxHp;
¡¡¡¡¡¡¡¡// Hp¥²¡¼¥¸¤Îɽ¼¨¹¹¿·
¡¡¡¡¡¡¡¡DisplayHpGauge();
}
// ¿¯ÆþȽÄê
private void OnTriggerEnter2D(Collider2D col) {
¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥È¤¬ÀÜ¿¨¤·¤¿¤é
if (col.gameObject.tag == "Bullet") {
// ¿¯Æþ¤·¤Æ¤¤¿¥³¥é¥¤¥À¡¼¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë Bullet ¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤¿¤é¼èÆÀ¤·¤Æ bullet ÊÑ¿ô¤ËÂåÆþ¤·¤Æ¡¢if ʸ¤ÎÃæ¤Î½èÍý¤ò¹Ô¤¦
if (col.gameObject.TryGetComponent(out Bullet bullet)) {
// HP¤Î¹¹¿·½èÍý¤È¥¨¥Í¥ß¡¼¤ÎÇ˲õ³Îǧ¤Î½èÍý¤ò¸Æ¤Ó½Ð¤¹
UpdateHp(bullet);¡¡
// ¥Ð¥ì¥Ã¥È¤Î¥Ò¥Ã¥È±é½ÐÍÑ¥¨¥Õ¥§¥¯¥È¤ÎÀ¸À®
GenerateBulletEffect(col.gameObject.transform);
}
}
}
/// <summary>
/// ¥Ð¥ì¥Ã¥È¤ÎÇ˲õ½èÍý
/// </summary>
private void DestroyBullet(Collider2D col)
{
// ¥Ð¥ì¥Ã¥È¤òÇ˲õ¤¹¤ë
Destroy(col.gameObject);
}
/// <summary>
/// Hp¤Î¹¹¿·½èÍý¤È¥¨¥Í¥ß¡¼¤ÎÇ˲õ³Îǧ½èÍý
/// </summary>
private void UpdateHp(Bullet bullet)
{
¡¡¡¡¡¡¡¡// ¥À¥á¡¼¥¸³ÎÄêÍÑ
int bulletPower = 0;
¡¡¡¡¡¡¡¡// ¼åÅÀȽÄêÍÑ¡£¼åÅÀ¤Î¾ì¹ç¤Ë¤Ï¡¢true ¤ËÀÚ¤êÂØ¤¨¤ë
bool isWeakness = false;
// ¥Ð¥ì¥Ã¥È¤Î°À¤È¥¨¥Í¥ß¡¼¤Î°À¤Î¾ðÊó¤òÍøÍѤ·¤ÆÁêÀ¤òȽÄê
if(ElementCompatibilityHelper.GetElementCompatibility(bullet.bulletData.elementType, enemyData.elementType) == true) {
Debug.Log("Element ÁêÀ¡¡ÎÉ");
// ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎϤò¥À¥á¡¼¥¸ÇÜΨʬ³Ý¤±¤¿Ãͤˤ·¤Æ¡¢·×»»·ë²Ì¤òÀÚ¤ê¾å¤²¤Æ int ·¿¤Ë¤¹¤ë
bulletPower = Mathf.FloorToInt(bullet.bulletData.bulletPower * GameData.instance.GetDamageRatio());
// ¼åÅÀ¤È¤·¤ÆÀßÄê
isWeakness = true;
} else {
// ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎϤò¤½¤Î¤Þ¤ÞÍøÍѤ¹¤ë
bulletPower = bullet.bulletData.bulletPower;
}
¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎÏÃÍÍÑ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À®
CreateFloatingMessageToBulletPower(bulletPower, isWeakness);
// hp¤Î¸º»»½èÍý
hp -= bulletPower;
¡¡¡¡ // Hp ¤ÎÃͤξå¸Â¡¦²¼¸Â¤ò³Îǧ¤·¤ÆÈÏ°ÏÆâ¤ËÀ©¸Â
¡¡¡¡¡¡¡¡hp = Mathf.Clamp(hp, 0, maxHp);
// HP¥²¡¼¥¸¤Îɽ¼¨¹¹¿·
DisplayHpGauge();
if (hp <= 0) {
hp = 0;
// ¥Ü¥¹¤Î¾ì¹ç
if (enemyData.enemyType == EnemyType.Boss) {
// ¥Ü¥¹Æ¤È²ºÑ¤ß¤Î¾õÂ֤ˤ¹¤ë
enemyGenerator.SwitchBossDestroyed(true);
}
////* ¤³¤³¤«¤é½èÍý¤òºï½ü *////
// Exp ¤ò TotalExp ¤Ë²Ã»»
//GameData.instance.UpdateTotalExp(enemyData.exp);
////* ¤³¤³¤Þ¤Ç *////
// ºÇ¿·¤Î TotapExp ¤òÍøÍѤ·¤ÆÉ½¼¨¹¹¿·
enemyGenerator.PreparateDisplayTotalExp(enemyData.exp);
// ¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇ˲õ¤¹¤ë
Destroy(gameObject);
}
// ¥Î¡¼¥Þ¥ëÃÆ¤Î¾ì¹ç
if (bullet.bulletData.bulletType == BulletDataSO.BulletType.Player_Normal || bullet.bulletData.bulletType == BulletDataSO.BulletType.Player_5ways_Normal) {
// ¥Ð¥ì¥Ã¥È¤òÇ˲õ
Destroy(bullet.gameObject);
}
}
/// <summary>
/// HP¥²¡¼¥¸¤Îɽ¼¨¹¹¿·
/// </summary>
private void DisplayHpGauge() {
¡¡¡¡¡¡¡¡// HP¥²¡¼¥¸¤ò¸½ºßÃͤ˹ç¤ï¤»¤ÆÀ©¸æ
slider.DOValue((float)hp / maxHp, 0.25f);
}
/// <summary>
/// Èï¥Ð¥ì¥Ã¥È»þ¤Î¥Ò¥Ã¥È±é½ÐÍѤΥ¨¥Õ¥§¥¯¥ÈÀ¸À®
/// </summary>
¡¡¡¡/// <param name="bulletTran"></param>
private void GenerateBulletEffect(Transform bulletTran) {
¡¡¡¡¡¡¡¡// ¥Ò¥Ã¥È±é½ÐÍѤΥ¨¥Õ¥§¥¯¥È¤ò¡¢¥Ð¥ì¥Ã¥È¤Î¤Ö¤Ä¤«¤Ã¤¿°ÌÃÖ¤ÇÀ¸À®
GameObject effect = Instantiate(bulletEffectPrefab, bulletTran, false);
// ¥¨¥Õ¥§¥¯¥È¤ò¥¨¥Í¥ß¡¼¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë
effect.transform.SetParent(transform);
Destroy(effect, 3.0f);
}
/// <summary>
/// ¥¨¥Í¥ß¡¼¤ÎÄɲÃÀßÄê
/// </summary>
/// <param name="enemyGenerator"></param>
/// <param name="bulletData"></param>
public void AdditionalSetUpEnemy(EnemyGenerator enemyGenerator, BulletDataSO.BulletData bulletData) {
// °ú¿ô¤ÇÆÏ¤¤¤¿¾ðÊó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¥¹¥¯¥ê¥×¥ÈÆâ¤ÇÍøÍѤǤ¤ë¾õÂ֤ˤ¹¤ë
this.enemyGenerator = enemyGenerator;
// MoveEventSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î GetMoveEvent ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢Ìá¤êÃÍ¤Ç°ÜÆ°ÍѤΥ᥽¥Ã¥É¤ò¼õ¤±¼è¤ë¡£¤³¤³¤Ç°ÜưÊýË¡¤ò·èÄê
moveEvent = this.enemyGenerator.moveEventSO.GetMoveEvent(enemyData.moveType);
// Invoke ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢moveEvent ÊÑ¿ô¤ËÅÐÏ¿¤µ¤ì¤¿¥á¥½¥Ã¥É(º£²ó¤Ï°ÜưÍѤΥ᥽¥Ã¥É)¤ò¼Â¹Ô¤¹¤ë¡£UnityActon <Transform, float>·¿¤Ê¤Î¤Ç¡¢¼Â¹Ô¤Ë¤¢¤¿¤Ã¤Æ¡¢»ØÄꤵ¤ì¤¿·¿¤Î¾ðÊó¤ò»ØÄꤹ¤ë
moveEvent.Invoke(transform, enemyData.moveDuration);
// ¥Ð¥ì¥Ã¥È¤Î¥Ç¡¼¥¿¤¬¤¢¤ê¡¢¤«¤Ä¡¢¥Ð¥ì¥Ã¥È¤Î¼ïÎब None ¤Ç¤Ï¤Ê¤¤¾ì¹ç
if (bulletData != null && bulletData.bulletType != BulletDataSO.BulletType.None) {
¡¡¡¡¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥È¤Î¼«Æ°À¸À®½èÍý¤ò¼Â¹Ô¤¹¤ë
StartCoroutine(EnemyShot(bulletData));
}
Debug.Log("ÄɲÃÀßÄ괰λ");
}
/// <summary>
/// ¥Ð¥ì¥Ã¥È¤Î¼«Æ°À¸À®
/// </summary>
/// <returns></returns>
private IEnumerator EnemyShot(BulletDataSO.BulletData bulletData) {
// ¾ò·ï¤Ë true ¤ò»ØÄꤹ¤ë¤È̵À©¸Â¤Î¥ë¡¼¥×½èÍý¤Ë¤Ê¤ë
while (true) {
// ¥¨¥Í¥ß¡¼¤Î¥Ð¥ì¥Ã¥È¤Î¥¯¥í¡¼¥ó¤òÀ¸À®¤·¡¢Ìá¤êÃͤò bulletObj ÊÑ¿ô¤ËÂåÆþ
GameObject bulletObj = Instantiate(enemyBulletPrefab, transform);
¡¡¡¡¡¡¡¡¡¡¡¡// ¥¯¥í¡¼¥ó¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤«¤é Bullet ¥¹¥¯¥ê¥×¥È¤ò¼èÆÀ¤·¤Æ¡¢ShotBullet ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë
bulletObj.GetComponent<Bullet>().ShotBullet(enemyGenerator.PreparateGetPlayerDirection(transform.position), bulletData);
// ¥Ü¥¹¤Î¾ì¹ç
if (enemyData.moveType == MoveType.Boss_Horizontal) {
// ¥Ð¥ì¥Ã¥È¤È¥¨¥Í¥ß¡¼¤Î¿Æ»Ò´Ø·¸¤ò²ò¾Ã¤·¡¢¥Ð¥ì¥Ã¥È¤Î¿Æ¤ò TemporaryObjectContainer ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËÊѹ¹¤¹¤ë
bulletObj.transform.SetParent(TransformHelper.GetTemporaryObjectContainerTran());
}
¡¡¡¡¡¡¡¡¡¡¡¡// BulletData ¤ËÀßÄꤵ¤ì¤Æ¤¤¤ëÂÔµ¡»þ´Öʬ¤À¤±½èÍý¤òÃæÃǤ¹¤ë(ÂÔµ¡¤¹¤ë)
yield return new WaitForSeconds(bulletData.loadingTime);
}
}
/// <summary>
/// ¥Ð¥ì¥Ã¥È¤Î¹¶·âÎÏÃÍʬ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À®
/// </summary>
/// <param name="bulletPower"></param>
/// <param name="isWeakness"></param>
private void CreateFloatingMessageToBulletPower(int bulletPower, bool isWeakness) {
// ¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀ¸À®¡£À¸À®°ÌÃÖ¤Ï EnemySet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î FloatingMessageTran ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ(»Ò¥ª¥Ö¥¸¥§¥¯¥È)
FloatingMessage floatingMessage = Instantiate(floatingMessagePrefab, floatingDamageTran, false);
// À¸À®¤·¤¿¥Õ¥í¡¼¥Èɽ¼¨¤ÎÀßÄêÍѥ᥽¥Ã¥É¤ò¼Â¹Ô¡£°ú¿ô¤È¤·¤Æ¡¢¥Ð¥ì¥Ã¥È¤Î¹¶·âÎÏÃÍ¤È¥Õ¥í¡¼¥Èɽ¼¨¤Î¼ïÎà¤ò»ØÄꤷ¤ÆÅϤ¹
floatingMessage.DisplayFloatingMessage(bulletPower, FloatingMessage.FloatingMessageType.EnemyDamage, isWeakness);
}
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
£²¡Ý£µ¡¥BulletSelectManager ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë
¡¡Æ±¤¸¤¯ Exp ¤Î¸º»»»þ¤Î½èÍý¤Ë¤Ä¤¤¤Æ¤â½¤Àµ¤ò¹Ô¤¤¤Þ¤¹¡£
¤³¤Á¤é¤â¤ä¤Ï¤ê¥Ý¥¤¥ó¥È¤Ï½èÍý¤Î½çÈ֤ȡ¢°ú¿ô¤Ç¤¹¡£
BulletSelectManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class BulletSelectManager : MonoBehaviour
{
[SerializeField]
private BulletSelectDetail bulletSelectDetailPrefab;¡¡¡¡// BulletSelectDetail ¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¡¢¥×¥ì¥Õ¥¡¥Ö¤Î btnBulletSelect ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
[SerializeField]
private Transform bulletTran; // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ÎÀ¸À®°ÌÃ֤Ȥ·¤ÆÍøÍѤ¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
private const int maxBulletBtnNum = 4; // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ÎºÇÂç¿ô¡£Äê¿ô¤È¤·¤ÆÀë¸À¤¹¤ë
public List<BulletSelectDetail> bulletSelectDetailList = new List<BulletSelectDetail>(); // À¸À®¤µ¤ì¤¿¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List
[SerializeField]
private BulletDataSO bulletDataSO; // BulletDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
[SerializeField]
private ElementDataSO elementDataSO;¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ // ElementDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
private GameManager gameManager;¡¡
/// <summary>
/// ¥Ð¥ì¥Ã¥ÈÁªÂòÍѥܥ¿¥ó¤ÎÀ¸À®
/// </summary>
/// <param name="gameManager"></param>
/// <returns></returns>
public IEnumerator GenerateBulletSelectDetail(GameManager gameManager) {
this.gameManager = gameManager;
// BulletDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤«¤é¡¢ÍøÍѼԤμïÎब Player ¤Î¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤À¤±¤òÂåÆþ¤¹¤ë List ¤òÍѰդ¹¤ë
List<BulletDataSO.BulletData> playerBulletDatas = new List<BulletDataSO.BulletData>();
// ¥Ð¥ì¥Ã¥È¤ÎÍøÍѼԤμïÎब Player ¤Î¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤À¤±¤òÃê½Ð¤·¤Æ List ¤òºîÀ®¤¹¤ë
playerBulletDatas = bulletDataSO.bulletDataList.Where(x => x.liberalType == BulletDataSO.LiberalType.Player).ToList();
for (int i = 0; i < maxBulletBtnNum; i++) {
// ¥Ð¥ì¥Ã¥È¥Ü¥¿¥óÀ¸À®
BulletSelectDetail bulletSelectDetail = Instantiate(bulletSelectDetailPrefab, bulletTran, false);
// TODO ¥Ð¥ì¥Ã¥È¥Ü¥¿¥ó¤ÎÀßÄê¡£¤Þ¤¿¸å¤Ç°ú¿ô¤ËÊѹ¹¤¬¤¢¤ê¤Þ¤¹
bulletSelectDetail.SetUpBulletSelectDetail(this, playerBulletDatas[i]);
// ¥ê¥¹¥È¤ËÄɲÃ
bulletSelectDetailList.Add(bulletSelectDetail);
¡¡¡¡¡¡¡¡¡¡¡¡// 0.25 ÉäÀ¤±½èÍý¤òÃæÃÇ(½çÈ֤˥ܥ¿¥ó¤¬À¸À®¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë±é½Ð)
yield return new WaitForSeconds(0.25f);
}
// »ÈÍѤ¹¤ë¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤ò½é´üÀßÄê
GameData.instance.SetBulletData(playerBulletDatas[0]);
}
/// <summary>
/// ¤¹¤Ù¤Æ¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ËÂФ·¤Æ no ¤Ç¾È¹ç¤ò¹Ô¤¤¡¢ÁõÅ¶Ãæ¤È̤ÁõŶ¤Î¾õÂÖ¤òÊѹ¹
/// </summary>
/// <param name="bulletNo"></param>
public void ChangeLoadingBulletSettings(int bulletNo) {
¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List ¤ÎÍ×ÁǤò¤¹¤Ù¤Æ¼è¤ê½Ð¤·¡¢£±¤Ä¤º¤Ä½çÈ֤˽èÍý¤¹¤ë
for (int i = 0; i < bulletSelectDetailList.Count; i++) {
// ¤³¤ÎÍ×ÁǤΥХì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î no ¤ÎÃͤ¬ bulletNo (ÁªÂò¤µ¤ì¤¿¥Ð¥ì¥Ã¥È)¤ÈƱ¤¸¤Ç¤¢¤ë¤Ê¤é
if (bulletSelectDetailList[i].bulletData.no == bulletNo) {
// ÁõÅ¶Ãæ¾õÂ֤ˤ¹¤ë
bulletSelectDetailList[i].ChangeLoadingBullet(true);
bulletSelectDetailList[i].ChangeColorToBulletBtn(new Color(0.65f, 0.65f, 0.65f));
¡¡¡¡¡¡¡¡¡¡¡¡// ¤½¤ì°Ê³°¤Î no ¤Î¾ì¹ç¤Ë¤Ï
} else {
// ̤ÁõŶ¾õÂ֤ˤ¹¤ë
bulletSelectDetailList[i].ChangeLoadingBullet(false);
bulletSelectDetailList[i].ChangeColorToBulletBtn(new Color(1.0f, 1.0f, 1.0f));
}
}
}
/// <summary>
/// ½é´ü¥Ð¥ì¥Ã¥È¤òÁõÅ¶Ãæ¤Î¥Ð¥ì¥Ã¥È¤È¤·¤ÆÀßÄê
/// </summary>
public void ActivateDefaultBullet() {
// ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List ¤«¤éÍ×ÁǤò£±¤Ä¤º¤Ä¼è¤ê½Ð¤¹
foreach (BulletSelectDetail bulletSelectDetail in bulletSelectDetailList) {
// ½é´ü¥Ð¥ì¥Ã¥È¤ÎÀßÄ꤬¤¢¤ë¥Ð¥ì¥Ã¥È¤Î¥Ç¡¼¥¿¤Î¾ì¹ç
if (bulletSelectDetail.isDefaultBullet) {
// ¤½¤Î¥Ð¥ì¥Ã¥È¤òÁõÅ¶Ãæ¤Î¾õÂ֤ˤ¹¤ë
bulletSelectDetail.OnClickBulletSelect();
Debug.Log("½é´ü¥Ð¥ì¥Ã¥È¤òÁõÅ¶Ãæ¤Î¥Ð¥ì¥Ã¥È¤È¤·¤ÆÀßÄê");
return;
}
}
}
/// <summary>
/// »ÈÍѲÄǽ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î³Îǧ¤È¹¹¿·
/// </summary>
public void JugdeOpenBullets() {
¡¡¡¡¡¡¡¡// ·«¤êÊÖ¤·ÍøÍѤ¹¤ë¾ðÊó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤ª¤¯
int totalExp = GameData.instance.GetTotalExp();
// ¥Ð¥ì¥Ã¥È¤´¤È¤Ë»ÈÍѲÄǽ¤ÊEXP¤òͤ¨¤Æ¤¤¤ë¤«³Îǧ
foreach (BulletSelectDetail bulletData in bulletSelectDetailList) {
// ¥²¡¼¥à½ªÎ»¤Î¾õÂ֤ˤʤ俤é
if (gameManager.isGameUp) {
// ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤òÈó³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤Ê¤¤¾õÂ֤ˤ¹¤ë
bulletData.SwitchActivateBulletBtn(false);
continue;
}
// ¥³¥¹¥È¤ò»Ùʧ¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¡¢Ìá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ³Îǧ¤¹¤ë
if (bulletData.GetStateBulletCostPayment()) {
// ¥³¥¹¥È¤ò»Ùʧ¤¤ºÑ¤ß¤Î¾ì¹ç¡¢¤½¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Ï¥ª¥ó¤Î¾õÂ֤ˤ¹¤ë
bulletData.SwitchActivateBulletBtn(true);
continue;
}
// ¥Ð¥ì¥Ã¥È¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¥³¥¹¥È¤ÎÃͤè¤ê¤â¡¢Exp ¤Î¸½ºßÃͤÎÊý¤¬Â礤¤¤«Æ±¤¸¤Ç¤¢¤ì¤Ð
if (bulletData.bulletData.openExp <= totalExp) {
// ¤½¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ò³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë
bulletData.SwitchActivateBulletBtn(true);
if (!bulletData.IsOpenAnimation) {
bulletData.OpenBulletAnimation(true);
}
} else {
// Exp ¤Î¸½ºßÃͤ¬Ä¶¤¨¤Æ¤¤¤Ê¤¤¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤òÈó³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
bulletData.SwitchActivateBulletBtn(false);
if (bulletData.IsOpenAnimation) {
bulletData.OpenBulletAnimation(false);
}
}
}
}
/// <summary>
/// ÁªÂò¤·¤¿¥Ð¥ì¥Ã¥È¤Î¥³¥¹¥È¤Î»Ùʧ¤¤¤È¤½¤ì¤Ë´ØÏ¢¤¹¤ë½èÍý
/// </summary>
/// <param name="costExp"></param>
public void SelectedBulletCostPayment(int costExp) {
////* ¤³¤³¤«¤é½èÍý¤Î½çÈÖ¤òÆþ¤ìÂØ¤¨¤ë *////
// ²èÌ̤ΠExp ɽ¼¨¸º»»¸å¤ÎÃͤ˹¹¿·
gameManager.uiManager.DisplayTotalExp(-costExp);
// ¥³¥¹¥È¤ÎÃÍ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤òÀ¸À®
gameManager.uiManager.CreateFlotingMessageToExp(-costExp, FloatingMessage.FloatingMessageType.BulletCost);
// TotalExp(Exp ¤Î¸½ºßÃÍ) ¤è¤ê¡¢ÁªÂò¤·¤¿¥Ð¥ì¥Ã¥È¤Î¥³¥¹¥È¤ò¸º»»
GameData.instance.UpdateTotalExp(-costExp);¡¡¡¡¡¡¡¡¡¡//¡¡<=¡¡°ú¿ô¤òÊѹ¹¤·¤Þ¤¹
////* ¤³¤³¤Þ¤Ç *////
// »ÈÍѲÄǽ¥Ð¥ì¥Ã¥È¤Î³Îǧ¤È¹¹¿·
JugdeOpenBullets();
}
/// <summary>
/// ElementType¤«¤éSprite¼èÆÀÍÑ
/// </summary>
/// <param name="elementType"></param>
/// <returns></returns>
public Sprite GetElementTypeSprite(ElementType elementType) {
// elementDataList ÊÑ¿ô¤ÎÍ×ÁǤò£±¤Ä¤º¤Ä½çÈÖ¤¤¤Ë¼è¤ê½Ð¤·¤Æ¡¢elementData ÊÑ¿ô¤ØÂåÆþ
foreach (ElementDataSO.ElementData elementData in elementDataSO.elementDataList) {
// ¸½ºßÂåÆþ¤µ¤ì¤Æ¤¤¤ë ElementData ¤Î ElementType ¤È°ú¿ô¤Î elementType ¤¬Æ±¤¸¤Ç¤¢¤ë¤Ç¤¢¤ë¤«¾È¹ç
if (elementData.elementType == elementType) {
// ¾È¹ç¤Î·ë²Ì¡¢¹çÃפ·¤¿ ElementData ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë²èÁü¾ðÊó¤òÌ᤹
return elementData.elementSprite;
}
}
// ¤É¤ì¤â¹çÃפ·¤Ê¤¤¾ì¹ç¤Ï null ¤òÌ᤹
return null;
}
/// <summary>
/// BulletType ¤è¤ê BulletData ¤ò¸¡º÷¤·¤Æ¼èÆÀ
/// </summary>
/// <param name="bulletType"></param>
/// <returns></returns>
public BulletDataSO.BulletData GetBulletData(BulletDataSO.BulletType bulletType) {
// °ú¿ô¤Î bulletType ¤ÈƱ¤¸ BulletType ¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë BulletData ¤òõ¤¹
foreach (BulletDataSO.BulletData bulletData in bulletDataSO.bulletDataList.Where(x => x.bulletType == bulletType)) {
// ¹çÃפ·¤¿ BulletData ¤òÌ᤹
return bulletData;
}
// ¤É¤ì¤â¹çÃפ·¤Ê¤¤¾ì¹ç¤Ï null ¤òÌ᤹
return null;
}
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
£²¡Ý£¶¡¥½èÍý¤Ë¥³¥á¥ó¥È¤òµ½Ò¤¹¤ë
¡¡º£²ó¤Î£´¤Ä¤Î¥¹¥¯¥ê¥×¥È¤Ë¤ª¤¤¤Æ¼ÂÁõ¤·¤Æ¤¤¤ë½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¥³¥á¥ó¥È¤ò³ä°¦¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤é¤Î½èÍý¤Ë¤Ä¤¤¤Æ¡¢¥²¡¼¥à¾å¤Ç¤Îưºî¤È¤·¤Æ¥³¥á¥ó¥È¤òµ½Ò¤Ç¤¤ë¤«¡¢Ä©À路¤Æ¤¯¤À¤µ¤¤¡£
¡¡¼ÂÁõ¤¹¤ëÆâÍÆ¤ò³Îǧ¤·¡¢¥Ç¥Ð¥Ã¥°¤¬É¬ÍפÊÉôʬ¤òÍý²ò¤·¤¿¾å¤Ç½èÍý¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£
²¿¤«½ê¤«¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤ò¼«Ê¬¤Ç£±¤Ä¤º¤Ä³Îǧ¤·¤Æ¤¤¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡ã¼ÂÁõư²è¡¡Exp ²Ã»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡ã¼ÂÁõư²è¡¡Exp ¸º»»»þ¡ä
ư²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡¼¡¤Ï¡¡³ÈÄ¥£³¡¡¡Ý¥¥ã¥é¥â¥Ç¥ë¤Î¥¢¥Ë¥á±é½Ð¤ÎÄɲáݡ¡¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°




¥³¥á¥ó¥È¤ò¤«¤¯