ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2023ǯ06·î25Æü(Æü) 14:35:49ÍúÎò
ºÇ¸å¤Î¼ê½ç¤Ç¤Ï¡¢½Æ¤ò»È¤Ã¤¿¹¶·âÍѤΥ¹¥¯¥ê¥×¥È¤ÎºîÀ®¤ò¹Ô¤¤¤Þ¤¹¡£
¼ê½ç£¶ ¡¼¥×¥ì¥¤¥ä¡¼¤Î¹¶·âµ¡Ç½¤Î¼ÂÁõ¡¼
¡¡½Æ¤Î½èÍý¤Î¥¹¥¯¥ê¥×¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢²¼µ¤Î¥µ¥¤¥ÈÍͤò»²¹Í¤Ë¤·¤Æ¤¤¤Þ¤¹¡£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 ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ¼ÂÁõ¤·¡¢
¤½¤ì¤é¤Î¼ÂÁõ¤¬½ªÎ»¤·¤Æ¤«¤é¡¢ºÆÅÙ½¤Àµ¤ò²Ã¤¨¤Æ´°À®¤Ë¶á¤Å¤±¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡²èÌ̤Υ¿¥Ã¥×½èÍý(¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯) ¤òȽÄꤷ¡¢Physics.Raycast ¥á¥½¥Ã¥É¤ò³èÍѤ·¤Æ¡¢ÃƤ¬È¯¼Í¤Ç¤¤ë¤«¤ò´ÉÍýÀ©¸æ¤¹¤ë¥¯¥é¥¹¤Ç¤¹¡£
PlayerController ¤«¤éÃÆ¿ô¤Î¾ðÊó¤òÄ󶡤·¤Æ¤â¤é¤¤¤Ä¤Ä¡¢¤³¤Á¤é¤«¤é¤â PlayerController ¤ÎÃÆ¿ô¤ÎÃͤò¹¹¿·¤·¤¿¤ê¡¢¥ê¥í¡¼¥É¤µ¤»¤ëÌ¿Îá¤ò½Ð¤·¤Þ¤¹¡£
¡¡Physics.Raycast ¥á¥½¥Ã¥É¤ÎÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï³ä°¦¤·¤Æ¤¢¤ê¤Þ¤¹¡£¤³¤Î¥á¥½¥Ã¥É¤Ë¤Ï°ú¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢À§ÈóÄ´¤Ù¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥Þ¥¦¥¹¥¯¥ê¥Ã¥¯¤ò²¡¤·¤Ã¤Ñ¤Ê¤·¤ÇÃƤòϢ³¤Çȯ¼Í¤Ç¤¤ë¤è¤¦¤ËÀ©¸æ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢º£²ó¤Ï¡¢Ã±È¯¤Çȯ¼Í¤¹¤ë½èÍý¤Ï̤¼ÂÁõ¤Ç¤¹¡£
ÀÚ¤êÂؤ¨ÍѤÎÊÑ¿ô¤Ï PlayerController ¦¤ËÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤òÍøÍѤ¹¤ë¤³¤È¤Ç¼ÂÁõ½ÐÍè¤Þ¤¹¡£
RayController.cs
¡¡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 ¤Îʸ»úÎó¤ò 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 ¤¬Åö¤¿¤Ã¤Æ¤¤¤ë¤«¤â³Îǧ¤·¤Þ¤·¤ç¤¦¡£
¥¨¥Õ¥§¥¯¥È¤¬ºÆÍøÍѤµ¤ì¤Æ¤¤¤ë¤«¤â¹ç¤ï¤»¤Æ³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡=>¡¡¼¡¤Ï¡¡¼ê½ç£·¡¡¡¼°ÜÆ°·ÐÏ©¤ÎºîÀ®¤È·ÐÏ©¤Î´ÉÍýµ¡Ç½¡¼¡¡¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯