ºÇ½ª¹¹¿·¡§
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 ¸º»»»þ¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡¼¡¤Ï¡¡³ÈÄ¥£³¡¡¡Ý¥¥ã¥é¥â¥Ç¥ë¤Î¥¢¥Ë¥á±é½Ð¤ÎÄɲáݡ¡¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯