Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡°ú¤­Â³¤­¡¢¥×¥ì¥¤¥ä¡¼¤Î¹¶·â½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
ºÇ¸å¤Î¼ê½ç¤Ç¤Ï¡¢½Æ¤ò»È¤Ã¤¿¹¶·âÍѤΥ¹¥¯¥ê¥×¥È¤ÎºîÀ®¤ò¹Ô¤¤¤Þ¤¹¡£



¼ê½ç£¶ ¡¼¥×¥ì¥¤¥ä¡¼¤Î¹¶·âµ¡Ç½¤Î¼ÂÁõ¡¼

¡¡½Æ¤Î½èÍý¤Î¥¹¥¯¥ê¥×¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢²¼µ­¤Î¥µ¥¤¥ÈÍͤò»²¹Í¤Ë¤·¤Æ¤¤¤Þ¤¹¡£FPS ¥²¡¼¥à¤ÎÀ½ºîÊýË¡¤¬ÃúÇ«¤Ë¤Þ¤È¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£
Unity ¤Ç¥²¡¼¥à¤òºî¤í¤¦ ÍÍ
ÃƤÎȯ¼Í½èÍý¤Îºî¤êÊý¡õ¥¨¥Õ¥§¥¯¥È¤ÎÄɲÃÊýË¡
https://unity.moon-bear.com/zombie-slayer/shoot-an...



¡¡¡¦¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë ¡¼À¸À®¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇË´þ¤»¤º¤ËºÆÍøÍѤ¹¤ë¹Í¤¨Êý¤È¼ÂÁõÊýË¡Î㡼
¡¡¡¦LayerMask.GetMask ¥á¥½¥Ã¥É



£±¡¥Àß·×


¡¡¥×¥ì¥¤¥ä¡¼Â¦¤ÎÁàºî¼þ¤ê¤Î¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£¿·¤·¤¯£³¤Ä¤Î¥¯¥é¥¹¤òºîÀ®¤·¤Æ¤¤¤­¤Þ¤¹¡£
¥¯¥é¥¹Ì¾¤Ï¤³¤ÎÄ̤ê¤Ç¤¢¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤½¤Î¾ì¹ç¡¢¥¯¥é¥¹¤ÎÌò³ä¤Ë¹ç¤Ã¤¿Ì¾Á°¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¡»¡¡PlayerController¡¡¡¡¡¡¥×¥ì¥¤¥ä¡¼¤Î¾ðÊó¤ò´ÉÍý¤¹¤ë¥¯¥é¥¹¡£ÂÎÎϤäÃÆ¿ô¤Ê¤É¤ò´ÉÍý¤·¡¢³°Éô¤Î¥¯¥é¥¹¤Ë¾ðÊóÄ󶡤¹¤ë¥¯¥é¥¹¡£¥ê¥í¡¼¥É½èÍý¡¢Å¨¤Î¹¶·â¤ÎÅö¤¿¤êȽÄê¤Ê¤É¤â´ÉÍý¤¹¤ë
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥«¥á¥é¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(AR Camera¡¢¤¢¤ë¤¤¤Ï Main Camera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È)¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë


¡» EffectManager ¥¨¥Õ¥§¥¯¥È¤Î´ÉÍý¤ò¹Ô¤¦¥¯¥é¥¹¡£Create Empty ¤Ç¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢¤½¤³¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥·¥ó¥°¥ë¥È¥ó¤ÇºîÀ®¤·¡¢¤É¤Î¥¯¥é¥¹¤«¤é¤Ç¤â¥¢¥¯¥»¥¹¤·¤ä¤¹¤¤¾õÂ֤ˤ¹¤ë¡£¥¨¥Õ¥§¥¯¥È¤Ê¤É¤Ï¸ÄÊ̤Υ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë»ý¤¿¤»¤Ê¤¤¤è¤¦¤Ë¤·¡¢´ÉÍý¤ò´ÊÊز½¤Ç¤­¤ë


¡ãº£²ó¼ÂÁõ¤¹¤ë¥¯¥é¥¹¡ä
¡¡¡þRayController¡¡¡¡¡¡¡¡ ²èÌ̤Υ¿¥Ã¥×½èÍý(¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯)¤òȽÄꤷ¡¢Physics.Raycast ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ¡¢ÃƤ¬È¯¼Í¤Ç¤­¤ë¤«¤ò´ÉÍýÀ©¸æ¤¹¤ë¥¯¥é¥¹
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PlayerController ¤«¤éÃÆ¿ô¤Î¾ðÊó¤òÄ󶡤·¤Æ¤â¤é¤¤¡¢PlayerController ¤ÎÃÆ¿ô¤ÎÃͤò¹¹¿·¤·¤¿¤ê¡¢¥ê¥í¡¼¥É¤µ¤»¤ëÌ¿Îá¤ò¤À¤¹
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥«¥á¥é¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ Create Empty ¤Ç¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢¤½¤³¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë


¡ã´°À®»þ¤Î¥Ò¥¨¥é¥ë¥­¡¼²èÁü¡ä


¡¡¤³¤ì¤é¤¬¤¹¤Ù¤Æ´°À®¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¥×¥ì¥¤¥ä¡¼¤Î¹¶·â¤Î½èÍý¤¬¼ÂÁõ¤µ¤ì¤Þ¤¹¡£

¡¡¥¤¥Ù¥ó¥È¦(Ũ¤ä¥¢¥¤¥Æ¥à¤Ê¤É)¤Î¼ÂÁõ¤¬¤Þ¤ÀºÑ¤ó¤Ç¤¤¤Ê¤¤¤¿¤á¡¢¤½¤Î¼êÁ°¤Þ¤Ç¤ò Debug.Log ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ¼ÂÁõ¤·¡¢
¤½¤ì¤é¤Î¼ÂÁõ¤¬½ªÎ»¤·¤Æ¤«¤é¡¢ºÆÅÙ½¤Àµ¤ò²Ã¤¨¤Æ´°À®¤Ë¶á¤Å¤±¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Þ¤¹¡£


£²¡¥RayController ¥¯¥é¥¹¤òºîÀ®¤¹¤ë


¡¡²èÌ̤Υ¿¥Ã¥×½èÍý(¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯) ¤òȽÄꤷ¡¢Physics.Raycast ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ¡¢ÃƤ¬È¯¼Í¤Ç¤­¤ë¤«¤ò´ÉÍýÀ©¸æ¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£
PlayerController ¤«¤éÃÆ¿ô¤Î¾ðÊó¤òÄ󶡤·¤Æ¤â¤é¤¤¤Ä¤Ä¡¢¤³¤Á¤é¤«¤é¤â PlayerController ¤ÎÃÆ¿ô¤ÎÃͤò¹¹¿·¤·¤¿¤ê¡¢¥ê¥í¡¼¥É¤µ¤»¤ëÌ¿Îá¤ò½Ð¤·¤Þ¤¹¡£

¡¡Physics.Raycast ¥á¥½¥Ã¥É¤ÎÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï³ä°¦¤·¤Æ¤¢¤ê¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ë¤Ï°ú¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢À§ÈóÄ´¤Ù¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£

¡¡¥Þ¥¦¥¹¥¯¥ê¥Ã¥¯¤ò²¡¤·¤Ã¤Ñ¤Ê¤·¤ÇÃƤòϢ³¤Çȯ¼Í¤Ç¤­¤ë¤è¤¦¤ËÀ©¸æ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢º£²ó¤Ï¡¢Ã±È¯¤Çȯ¼Í¤¹¤ë½èÍý¤Ï̤¼ÂÁõ¤Ç¤¹¡£
ÀÚ¤êÂؤ¨ÍѤÎÊÑ¿ô¤Ï PlayerController ¦¤ËÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤òÍøÍѤ¹¤ë¤³¤È¤Ç¼ÂÁõ½ÐÍè¤Þ¤¹¡£


RayController.cs

<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤­¤Þ¤¹¡£



£³¡¥RayController ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Æ¡¢RayController ¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¡¢ÀßÄê¤ò¹Ô¤¦


¡¡Main Camera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤ò³«¤­¡¢Create Empty ¤òÁªÂò¤·¤Þ¤¹¡£
Main Camera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ºîÀ®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Ì¾Á°¤ò RayController ¤ËÊѹ¹¤·¤Þ¤¹¡£

¡¡Transfrom ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò³Îǧ¤·¡¢½Æ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Îȯ¼Í¸ýÉôʬ¤Ë¤Ê¤ë¤è¤¦¤Ë¡¢°ÌÃÖ¤òÄ´À°¤·¤Þ¤¹¡£
¤³¤ì¤Ï¡¢RayController ¥¯¥é¥¹¤¬¡¢RayController ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤Ëȯ¼Í¸ý¤Î¥¨¥Õ¥§¥¯¥È¤òÀ¸À®¤¹¤ë¤¿¤á¤Ç¤¹¡£



¡¡Â³¤¤¤Æ¡¢RayController ¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤«¤é¥¢¥µ¥¤¥ó¤·¤Æ¾ðÊó¤òÅÐÏ¿¤·¤Þ¤¹¡£

¡¡muzzleFlashScale ÊÑ¿ô¤Ë¤Ï¡¢À¸À®¤µ¤ì¤¿¥¨¥Õ¥§¥¯¥È¤Î¥µ¥¤¥ºÄ´À°ÍѤÎÃͤòÅÐÏ¿¤·¤Þ¤¹¡£
¤³¤³¤Ç¡¢¥¨¥Õ¥§¥¯¥È¤Î¥µ¥¤¥º¤ÎÈùÄ´À°¤¬½ÐÍè¤Þ¤¹¡£¥µ¥¤¥º¤ËÌäÂ꤬¤Ê¤¤¤È¤­¤Ï¤¹¤Ù¤Æ 1 ¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£

¡¡layerMasks ÊÑ¿ô¤Ë¤Ï¡¢¥¤¥Ù¥ó¥ÈÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(Ũ¡¢¥¢¥¤¥Æ¥à¡¢¾ã³²Êª)¤ËÀßÄꤷ¤¿ Layer ¤òÅÐÏ¿¤·¤Þ¤¹¡£
Ê£¿ô¤Î Layer ¤òÁÛÄꤷ¡¢ÇÛÎó¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£Layer ¤ÎÈÖ¹æ¤Ç£±¤Ä¤º¤ÄÅÐÏ¿¤·¤Æ¤ª¤­¤Þ¤¹¡£

¡¡layerMasksStr ÊÑ¿ô¤Ï¥²¡¼¥àÆâ¤Ç¾ðÊó¤¬Àµ¾ï¤ËÂåÆþ¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤¹¤ë¤¿¤á¤Ë¡¢°ì»þŪ¤Ë¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ëɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤³¤Ë¤Ï¥²¡¼¥à¼Â¹Ô¤ÈƱ»þ¤Ë LayerMasks ÊÑ¿ô¤ÇÅÐÏ¿¤·¤¿¿ôÃͤ¬Ê¸»úÎó¤ËÊÑ´¹¤µ¤ì¤ÆÅÐÏ¿¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢²¿¤âÅÐÏ¿¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£
¥²¡¼¥à¼Â¹Ô»þ¤ËÃͤÎÂåÆþ¤ò³Îǧ¤Ç¤­¤¿¤é SerializeField °À­¤Î¤ß¤òºï½ü¤·¤Æ private ¤Î¾ðÊó¤ËÌᤷ¤Æ¤ª¤­¤Þ¤¹¡£

¡¡PlayerController ÊÑ¿ô¤Ë¤Ï¡¢Main Camera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤·¤Æ¡¢¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë PlayerController ¥¯¥é¥¹¤òÅÐÏ¿¤·¤Þ¤¹¡£


¡ã¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü¡ä



¡¡°Ê¾å¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£


£´¡¥¡ã¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë ¡¼À¸À®¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇË´þ¤»¤º¤ËºÆÍøÍѤ¹¤ë¹Í¤¨Êý¤È¼ÂÁõÊýË¡Î㡼¡ä


¡¡Æ±¤¸°ÌÃÖ¤«¤éƱ¤¸¥¨¥Õ¥§¥¯¥È¤ò²¿²ó¤âÀ¸À®¤¹¤ë¤Î¤Ç¤Ï¸úΨ¤¬¤¤¤¤¤È¤Ï¸À¤¨¤Þ¤»¤ó¡£
¥¤¥ó¥¹¥¿¥ó¥·¥¨¥¤¥È½èÍý¤Ï·Ú¤¤½èÍý¤Ç¤â¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢ÉÑȯ¤¹¤ë¤È¥á¥â¥ê¤¬°µÇ÷¤µ¤ì¤Æ½èÍýÍî¤Á¤¬È¯À¸¤·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æºî¤é¤ì¤Æ¤¤¤ë¥¨¥Õ¥§¥¯¥È¤Î¾ì¹ç¡¢Play On Awake ¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ¤ª¤¯¤³¤È¤Ç
ºÆÅÙ¡¢SetActive ¥á¥½¥Ã¥É¤Çɽ¼¨¤ò¹Ô¤¦¤È¡¢¼«Æ°Åª¤Ë¥¨¥Õ¥§¥¯¥È¤ÎºÆÀ¸¤ò¹Ô¤Ã¤Æ¤¯¤ì¤Þ¤¹¡£

¡¡¤³¤Îµ¡Ç½¤ò³èÍѤ·¡¢ºÇ½é¤Ë£±²ó¤À¤±¥¨¥Õ¥§¥¯¥È¤òÀ¸À®¤·¤Æ¡¢¤½¤ì¤òÊÑ¿ô¤Ø¤ÈÂåÆþ¤·¤Æ¤ª¤­¤Þ¤¹¡£
¥¨¥Õ¥§¥¯¥È¤ÎºÆÀ¸¤¬½ªÎ»¤·¤¿¤é SetActive ¥á¥½¥Ã¥É¤ò»È¤Ã¤ÆÈóɽ¼¨¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£

¡¡¤½¤·¤Æ¼¡²ó¥¨¥Õ¥§¥¯¥È¤ÎºÆÀ¸¤ò¹Ô¤¦ºÝ¤Ë¤Ï¡¢À¸À®¤¬´°Î»¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï SetActive ¥á¥½¥Ã¥É¤ò»È¤Ã¤Æɽ¼¨¤¹¤ë¤³¤È¤Ç
¤â¤¦£±ÅÙ¥¨¥Õ¥§¥¯¥È¤ÎºÆÀ¸¤ò¹Ô¤Ã¤Æ¤¯¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤Ê¥µ¥¤¥¯¥ë¤òÍÑ°Õ¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢À¸À®¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇË´þ¤»¤º¡¢
º£²ó¤Ç¤¢¤ì¤Ð½Æ¤Îȯ¼Í¸ý¤Ëɽ¼¨¤µ¤ì¤ë¥¨¥Õ¥§¥¯¥È¤òºÆÍøÍѤ·¤Æ³èÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Æ¤¤¤Þ¤¹¡£


private GameObject muzzleFlashObj;   // À¸À®¤·¤¿¥¨¥Õ¥§¥¯¥È¤ÎÂåÆþÍÑ


// ȯ¼Í¥¨¥Õ¥§¥¯¥È¤Îɽ¼¨¡£½é²ó¤Î¤ßÀ¸À®¤·¡¢£²²óÌܤϥª¥ó¥ª¥Õ¤ÇÀÚ¤êÂؤ¨¤ë
if (muzzleFlashObj == null) {
    // ȯ¼Í¸ý¤Î°ÌÃÖ¤Ë RayController ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÃÖ¤¹¤ë
    muzzleFlashObj = Instantiate(EffectManager.instance.muzzleFlashPrefab, transform.position, transform.rotation);
    muzzleFlashObj.transform.SetParent(gameObject.transform);
    muzzleFlashObj.transform.localScale = muzzleFlashScale;

} else {
    // À¸À®ºÑ¤Î¥¨¥Õ¥§¥¯¥È¤Îɽ¼¨(¥Ñ¡¼¥Æ¥£¥¯¥ë¥·¥¹¥Æ¥à¤Î Play On Awake ¤Ë¥Á¥§¥Ã¥¯¤¬Æþ¤Ã¤Æ¤¤¤ë¤È¡¢¥¨¥Õ¥§¥¯¥È¤¬ºÆÅÙºÆÀ¸¤µ¤ì¤ë)
    muzzleFlashObj.SetActive(true);
}

// ȯ¼Í
Shoot();

yield return new WaitForSeconds(playerController.shootInterval);

// ¥¨¥Õ¥§¥¯¥ÈÈóɽ¼¨
muzzleFlashObj.SetActive(false);

¤³¤¦¤¤¤Ã¤¿¹Í¤¨Êý¤ò¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë ¤È¤¤¤¤¤Þ¤¹¡£
¤è¤¯¸«¤é¤ì¤ë¤Î¤Ï¡¢ÃƤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¤¢¤ëÄøÅÙ¤À¤±À¸À®¤·¤¿¤é¡¢¤¢¤È¤Ïɽ¼¨ / Èóɽ¼¨¤ò·«¤êÊÖ¤·¤ÆºÆÍøÍѤµ¤»¤ëÊýË¡¤Ç¤¹¡£
¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢ÃƤòÇ˲õ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯Èóɽ¼¨¤Ë¤·¤Æ¤ª¤­¡¢À¸À®»þ¤ËÈóɽ¼¨¤ÎÃƤ¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢À¸À®¤Ç¤Ï¤Ê¤¯¡¢Èóɽ¼¨¤ÎÃƤòɽ¼¨¤·¤Æ»È¤¤¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢ÂçÎ̤Υ¤¥ó¥¹¥¿¥ó¥¹¥·¥¨¥¤¥È½èÍý¤ò»ß¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¤¿¤á¡¢½èÍý¤ÎÉé²Ù·Ú¸º¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë¤Ë¤Ä¤¤¤Æ¤Ï¿§¡¹¤Êµ­»ö¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¹Í¤¨Êý¤â´Þ¤á¤ÆÄ´¤Ù¤Æ¤ª¤¯¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£
ºÇ¶á¤Ç¤Ï Unity ¼«ÂΤˤâɸ½àµ¡Ç½¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

»²¹Í¥µ¥¤¥È
Yucchiy's Note ÍÍ
Unity 2021¤«¤éÍøÍѤǤ­¤ëUnityɸ½à¤Î¥ª¥Ö¥¸¥§¥¯¥È¥×¡¼¥ë¤Ë¤Ä¤¤¤Æ
https://blog.yucchiy.com/2021/04/objectpool-in-uni...


£µ¡¥¡ãLayerMask.GetMask ¥á¥½¥Ã¥É¡ä


¡¡°ú¿ô¤Ë»ØÄꤷ¤¿ LayerMask ¤Îʸ»úÎó¤ò int ·¿¤ÎÃͤËÊÑ´¹¤·¤Æ¤¯¤ì¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£°ú¿ô¤Ë¤ÏÇÛÎó¤ò»ØÄꤷ¤Þ¤¹¡£

[SerializeField, Header("Ray ÍѤΥ쥤¥ä¡¼ÀßÄê")]
private int[] layerMasks;

[SerializeField]   //DebugÍÑ¡£³Îǧ¤Ç¤­¤¿¤é¡¢SerializeField °À­¤òºï½ü¤·¤Æ private ¤Ë¤·¤Æ¤ª¤¯
private string[] layerMasksStr;


// Layer ¤Î¾ðÊó¤òʸ»úÎó¤ËÊÑ´¹¤·¡¢Raycast ¥á¥½¥Ã¥É¤ÇÍøÍѤ·¤ä¤¹¤¤¾ðÊó¤òÊÑ¿ô¤È¤·¤ÆºîÀ®¤·¤Æ¤ª¤¯
layerMasksStr = new string[layerMasks.Length];
for (int i = 0; i < layerMasks.Length; i++) {
    layerMasksStr[i] = LayerMask.LayerToName(layerMasks[i]);
}


if (Physics.Raycast(ray, out hit, playerController.shootRange, LayerMask.GetMask(layerMasksStr))) {

º£²ó¤Î¾ì¹ç¡¢Enemy ¤ò°ú¿ô¤Ë»ØÄꤷ¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Enemy ¤òÅÐÏ¿¤·¤Æ¤¤¤ë Layer ¤ÎÈÖ¹æ¤Ç¤¢¤ë 6 ¤ÎÃͤ¬Ìá¤êÃͤȤ·¤Æ¼èÆÀ½ÐÍè¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ï¡¢Physics.Raycast ¥á¥½¥Ã¥É¤ÎÂè4°ú¿ô¤Î»ØÄêÃͤ¬ int ·¿¤Ç Layer ¤ò»ØÄꤹ¤ë¤è¤¦¤ËÍ׵ᤵ¤ì¤Æ¤¤¤ë¤¿¤á¤Ç¡¢¤½¤ì¤Ë¾ðÊó¤ò¹ç¤ï¤»¤ë¤¿¤á¤Ç¤¹¡£

Layer



¡¡º£¸å¥¤¥Ù¥ó¥È¤Î¼ïÎबÁý¤¨¤¿¤é¡¢LayerMasks ÇÛÎóÊÑ¿ô¤ËÃͤòÅÐÏ¿¤¹¤ë¤³¤È¤ÇÂбþ²Äǽ¤ÊÀ߷פǤ¹¡£


»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
LayerMask.GetMask
https://docs.unity3d.com/jp/current/ScriptReferenc...


£¶¡¥¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤¹¤ë


¡¡¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¤¤ä¤¹¤¤´Ä¶­¤òºî¤Ã¤Æ¡¢Æ°ºî¤ò³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡½àÈ÷¤¬À°¤Ã¤¿¤é¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¡¢¥¤¥Ù¥ó¥ÈÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¹¶·â¤ÎȽÄ꤬ȯÀ¸¤¹¤ë¤«¤É¤¦¤«¤ò Debug.Log ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ³Îǧ¤·¤Æ¤¤¤­¤Þ¤¹¡£


¡¡¥«¥á¥é¤Î²óž½èÍý¤¬Ì¤¼ÂÁõ¤Ç¤¢¤ë¤¿¤á¡¢¥¤¥Ù¥ó¥ÈÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï²èÌ̤ÎÃæ±ûÉôʬ¤ËÃÖ¤¤¤Æ¡¢Debug.DrawRay ¥á¥½¥Ã¥É¤Ç Ray ¤¬Åö¤¿¤Ã¤Æ¤¤¤ë¤«¤â³Îǧ¤·¤Þ¤·¤ç¤¦¡£
¥¨¥Õ¥§¥¯¥È¤¬ºÆÍøÍѤµ¤ì¤Æ¤¤¤ë¤«¤â¹ç¤ï¤»¤Æ³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£



¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£

¡¡=>¡¡¼¡¤Ï¡¡¼ê½ç£·¡¡¡¼°ÜÆ°·ÐÏ©¤ÎºîÀ®¤È·ÐÏ©¤Î´ÉÍýµ¡Ç½¡¼¡¡¤Ç¤¹¡£

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


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹