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

¡¡Êɤ侲¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥³¥é¥¤¥À¡¼¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ëÁ°Äó¤Ç¤¹¡£

¡¡Êɤ侲¤Î¥³¥é¥¤¥À¡¼ÆâÉô¤ËÃƤ¬À¸À®¤µ¤ì¤Æ¤·¤Þ¤Ã¤¿¾ì¹ç¡¢¤½¤Î¤Þ¤Þ¤Ç¤¹¤ÈÃƤ¬Êɤ侲¤ÎÃæ¤ò´ÓÄ̤·¤Þ¤¹¡£
¤½¤ì¤òÀ§¤È¤¹¤ë¥²¡¼¥àɽ¸½¤Ç¤¢¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¤¬¡¢Êɤ侲¤òÃƤ¬´ÓÄ̤¹¤ë¤Î¤òÎɤ·¤È¤·¤Ê¤¤¥²¡¼¥à¤Î¾ì¹ç¤Ë¤Ï²óÈòºö¤¬É¬Íפˤʤê¤Þ¤¹¡£


¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯

¡¡º£²ó¤Ï£³¤Ä¤Î¥¢¥×¥í¡¼¥ÁÎã¤ò·ÇºÜ¤·¤Þ¤¹¡£



¡ã¥¢¥×¥í¡¼¥Á£±¡¡¡¼Êɤ侲¦¤ò¼çÂΤȤ·¤Æ²óÈò¤¹¤ëÊýË¡¡¼¡ä


¡¡£²£Ä¥²¡¼¥àÍѤΥ³¥é¥¤¥À¡¼¡¢¤ª¤è¤Ó¥¿¥¤¥ë¥Þ¥Ã¥×¤Î¥³¥é¥¤¥À¡¼¤ËÂФ·¤Æ¤Î¼ÂÁõÎã¤Ç¤¹¡£

¡¡avoidCollider ÊÑ¿ô¤Ë¥¢¥µ¥¤¥ó¤µ¤ì¤¿Êɤ侲¤Î¥³¥é¥¤¥À¡¼¤ò´¶ÃΤµ¤»¤Æ
¤½¤Î¥³¥é¥¤¥À¡¼¤ÎÆâÉô¤ËÀ¸À®¤µ¤ì¤ëÁÛÄê¤Ç¡¢OnTriggerStay2D ¥á¥½¥Ã¥É¤òÍøÍѤ·¤ÆÂн褹¤ëÊýË¡¤Ç¤¹¡£

¡¡¤³¤ÎÎã¤Î¾ì¹ç¡¢¥³¥é¥¤¥À¡¼¤«¤é¸«¤Æ¡¢ÃƤǤ¢¤ë¤«¤òȽÄꤷ¤Æ¤¤¤Þ¤¹¡£
³Æ¥³¥é¥¤¥À¡¼¤´¤È¤Ë¤³¤Î¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤ÆÍøÍѤ·¤Þ¤¹¡£

¡¡ÃƤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï Bullet ¤È¤¤¤¦Ì¾Á°¤Î¥¯¥é¥¹(ÃƤÎÀ©¸æ¤ò¹Ô¤¦¥¯¥é¥¹)¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ëÁ°Äó¤Ç¤¹¡£


using UnityEngine;
using UniRx;
using UniRx.Triggers;

public class AvoidBulletExample : MonoBehaviour
{
    [SerializeField] private Collider2D avoidCollider;¡¡¡¡// ÂоݤȤʤ륳¥é¥¤¥À¡¼¤Î¥¢¥µ¥¤¥ó


    private void OnTriggerStay2D(Collider2D other)
    {
        // Êɤ侲¤ËÂФ·¤Æ¿¯Æþ¤·¤Æ¤¤¤ë¥³¥é¥¤¥À¡¼¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤ò³Îǧ¤·¤ÆÃƤǤ¢¤ë¤«¤òȽÄꤹ¤ë
        if(other.gameObject.TryGetComponent(out Bullet bullet))
        {
            // OnTriggerStay2D¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿ºÝ¤Î½èÍý
            Debug.Log($"OnTriggerStay2D event triggered with collider: { bullet.gameObject.name }");

            // ¤³¤³¤ÇÃƤò¾Ã¤¹
            Destroy(bullet.gameObject);
        }
    }
}



¡¡¾åµ­¤Î½èÍý¤ò UniRx ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë .OnTriggerStay2DAsObservable ¤ËÃÖ¤­´¹¤¨¤¿¾ì¹ç¤ÎÎã¤Ç¤¹¡£


using UnityEngine;
using UniRx;
using UniRx.Triggers;

public class AvoidBulletExample : MonoBehaviour
{
    [SerializeField] private Collider2D avoidCollider;¡¡¡¡// ÂоݤȤʤ륳¥é¥¤¥À¡¼¤Î¥¢¥µ¥¤¥ó


    void Start()
    {
        // OnTriggerStay2D¤Î¥¤¥Ù¥ó¥È¤òUniRx¤Ç¹ØÆÉ
        avoidCollider
	¡¡¡¡.OnTriggerStay2DAsObservable()
	¡¡¡¡.Where(otherCollider => otherCollider.gameObject.TryGetComponent(out Bullet bullet))
            .Subscribe(otherCollider =>
            {
                // OnTriggerStay2D¥¤¥Ù¥ó¥È¤¬È¯À¸¤·¤¿ºÝ¤Î½èÍý
                Debug.Log($"OnTriggerStay2D event triggered with collider: { otherCollider.name }");

                // ¤³¤³¤ÇÃƤò¾Ã¤¹(otherCollider ¤òÍøÍѤ¹¤ë)
		if(otherCollider.gameObject.TryGetComponent(out Bullet bullet)){
		    Destroy(bullet.gameObject);
		}
            })
            .AddTo(this); // ¥µ¥Ö¥¹¥¯¥ê¥×¥·¥ç¥ó¤òÇË´þ¤¹¤ë¤¿¤á¤Ë¡¢¤³¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬ÇË´þ¤µ¤ì¤¿»þ¤Ë¼«Æ°Åª¤ËÇË´þ¤¹¤ë¤è¤¦¤ËÅÐÏ¿
    }
}


¡¡
¡¡¤Ê¤ª¡¢¥¿¥¤¥ë¥Þ¥Ã¥×¤Î¾ì¹ç¤Ë¸Â¤ê¤Ç¤¹¤¬¡¢TilemapCollider2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë²Ã¤¨¤Æ
Composit Collider2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÍøÍѤ·¤Æ¥¿¥¤¥ë¥Þ¥Ã¥×¤Î¥³¥é¥¤¥À¡¼¤ò·ë¹ç¤·¤Æ¤¤¤ë¾ì¹ç¡¢¤³¤Î½èÍý¤ÏÀµ¾ï¤ËÆ°ºî¤·¤Þ¤»¤ó¡£
¡¡
¤½¤Î¾ì¹ç¡¢¥¿¥¤¥ë¥Þ¥Ã¥×¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë Composit Collider2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥ê¥à¡¼¥Ö¤¹¤ì¤Ð
¾åµ­¤Î¥¹¥¯¥ê¥×¥È¤¬Àµ¾ï¤ËÆ°ºî¤·¤Æ¡¢ÃƤ¬¾Ã¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤¿¤À¤·¡¢Composit Collider2D ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥ê¥à¡¼¥Ö¤·¤Æ¤·¤Þ¤¦¤È
¥¿¥¤¥ë¥Þ¥Ã¥×¤Î¥³¥é¥¤¥À¡¼¤¬¥°¥ë¡¼¥×¤Ç¤Ï¤Ê¤¯Ã±ÂÎÆ°ºî¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤Ç¡¢³ê¤é¤«¤Ê¾²¤ÎȽÄê¤Ï¤Ê¤¯¤Ê¤ê¡¢¥³¥é¥¤¥À¡¼¤Î·×»»Éé²Ù¤¬Áý¤¨¤Þ¤¹¡£

¡¡¤³¤ÎÊÕ¤ê¤Ï¥²¡¼¥à¤Îɽ¸½¤È¥È¥ì¡¼¥É¥ª¥Õ¤Î´Ø·¸À­¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¤Î¤Ç¡¢
¤´¼«Ê¬¤Î¥¤¥á¡¼¥¸¤Ë¶á¤¤É½¸½¤Î¼ÂÁõ¤òºÎÍѤ¹¤ë¤è¤¦¤Ë¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£


¡ã¥¢¥×¥í¡¼¥Á£²¡¡¡¼ÃƦ¤ò¼çÂΤȤ·¤Æ²óÈò¤¹¤ëÊýË¡¡¼¡ä


¡¡Ê̤Υ¢¥×¥í¡¼¥Á¤È¤·¤Æ¤Ï¡¢ÃƤÎÀ¸À®»þ¤Ë¡¢ÃƤÎȯ¼Í¤µ¤ì¤ë°ÌÃ֤Υ¿¥¤¥ë¥Þ¥Ã¥×¤ò³Îǧ¤·¡¢
¤½¤Î¥¿¥¤¥ë¥Þ¥Ã¥×¤Ë¥³¥é¥¤¥À¡¼¤¬Å¬ÍѤµ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤ÏÃƤòÀ¸À®¤·¤Ê¤¤¡¢¤¢¤ë¤¤¤Ï¡¢À¸À®¤·¤Æ¤¹¤°¤ËÇ˲õ¤¹¤ë¡¢¤È¤¤¤¦ÊýË¡¤â¤¢¤ê¤Þ¤¹¡£

¡¡¥¢¥×¥í¡¼¥Á£±¤È¤Ï°Û¤Ê¤ê¡¢³ºÅö¤¹¤ë¥³¥é¥¤¥À¡¼¤ò¥¢¥µ¥¤¥ó¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯
¥ì¥¤¥ä¡¼¤Î»ØÄê(Î㤨¤Ð Ground ¤È¤¤¤Ã¤¿¥ì¥¤¥ä¡¼) ¤ò¹Ô¤¦¤³¤È¤Ç¡¢ÃƦ¤«¤é¸«¤Æ¥³¥é¥¤¥À¡¼¤òÆÃÄꤷ¤Æ¤¤¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤á¡¢¤³¤Á¤é¤Î¥¹¥¯¥ê¥×¥È¤ÏÃƤÎÀ¸À®Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ëµ­½Ò¤¹¤ë½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£



¡¡ÃƤòÀ¸À®¤¹¤ë¥¯¥é¥¹Æâ¤Ë¡¢²¼µ­¤Î½èÍý¤òÄɲä·¤Þ¤¹¡£


    public LayerMask obstacleLayer; // Êɤä¾ã³²Êª¤Î¥ì¥¤¥ä¡¼¥Þ¥¹¥¯
    private float radius = 0.1f;    // ¥³¥é¥¤¥À¡¼È½ÄêÍѤαߤÎȾ·Â


    // ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤹ¤ë¥á¥½¥Ã¥É
    private bool CheckColliderAtPosition(Vector2 position)
    {
        Collider2D hitCollider = Physics2D.OverlapCircle(position, radius, obstacleLayer);
        return hitCollider != null;
    }


¡¡OverlapCircle ¥á¥½¥Ã¥É¤ÎÂè2°ú¿ô radius ¤¬¥³¥é¥¤¥À¡¼È½ÄêÍѤαߤÎȾ·Â¤Ç¤¹¡£
¤³¤³¤Ç¤Ï 0.1 ¤È¤·¤Æ¤¤¤Þ¤¹¤¬¡¢¥¿¥¤¥ë¥Þ¥Ã¥×£±¤Äʬ¤Î¥µ¥¤¥º¤Ë¤Ê¤ë¤è¤¦¤ËÄ´À°¤¹¤ë´¶¤¸¤Ç¤¹¡£
¡¡¤³¤Î¤è¤¦¤ËÌá¤êÃͤò»ý¤Ä¥³¥é¥¤¥À¡¼È½ÄêÍѤΥ᥽¥Ã¥É¤òÍÑ°Õ¤·¤Æ¤ª¤¤¤Æ¡¢ÃƤÎÀ¸À®¸å¤Ë¤³¤Î¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£

¡¡¾åµ­¤Î½èÍý¤ò»È¤¦ºÝ¤Ë¤Ï¡¢²¼µ­¤Î¤è¤¦¤Ê¹½À®¤ÇÍøÍѤ·¤Þ¤¹¡£

        // ÃƤÎÀ¸À®
        
        // ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤷ¤Æ·ë²Ì¤ò¼èÆÀ
        bool hasCollider = CheckColliderAtPosition([ÃƤÎÀ¸À®°ÌÃÖ]);

        if (hasCollider)
        {
            // ¥³¥é¥¤¥À¡¼¤¬¤¢¤ë¾ì¹ç¤ÏÃƤò¤¹¤°¤ËÇ˲õ¡£+ ±é½Ð
            Destroy(bullet);

            return;
        }
        
        // ¥³¥é¥¤¥À¡¼¤¬¤Ê¤¤¾ì¹ç¤ÏÄ̾ï¤Î½èÍý¤ò³¹Ô


¡¡¤³¤¦¤¤¤Ã¤¿·Á¤Çʬ´ô¤òºî¤ê¡¢ÃƤÎÀ¸À®»þ¤Ë¥³¥é¥¤¥À¡¼ÆâÉô¤Ë¤¤¤Ê¤¤¤«¤òȽÄꤷ¤Æ¤«¤é¡¢ÃƤòȯ¼Í¤µ¤»¤ëÊýË¡¤Ç¤¹¡£


¡ã¥¹¥¯¥ê¥×¥ÈÁ´Ê¸¡ä


¡¡ÃƤÎÀ¸À®¥¯¥é¥¹¤ËÁȤ߹þ¤ó¤À·Á¤Ç¡¢¥µ¥ó¥×¥ë·ÇºÜ¤·¤Æ¤ª¤­¤Þ¤¹¡£¡¡

using UnityEngine;

public class BulletController : MonoBehaviour
{
    public LayerMask obstacleLayer; // Êɤä¾ã³²Êª¤Î¥ì¥¤¥ä¡¼¥Þ¥¹¥¯


    // ÃƤÎÀ¸À®¥á¥½¥Ã¥É
    public void SpawnBullet(Vector2 spawnPosition)
    {
        // ÃƤÎÀ¸À®
        GameObject bullet = Instantiate(gameObject, spawnPosition, Quaternion.identity);

        // ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤷ¤Æ·ë²Ì¤ò¼èÆÀ
        bool hasCollider = CheckColliderAtPosition(spawnPosition);

        if (hasCollider)
        {
            // ¥³¥é¥¤¥À¡¼¤¬¤¢¤ë¾ì¹ç¤ÏÃƤò¤¹¤°¤ËÇ˲õ
            Destroy(bullet);
        }
        else
        {
            // ¥³¥é¥¤¥À¡¼¤¬¤Ê¤¤¾ì¹ç¤ÏÄ̾ï¤Î½èÍý¤ò³¹Ô
            // ¤³¤³¤ÇÃƤήÅÙ¤ä°ÜÆ°Êý¸þ¤Ê¤É¤ÎÀßÄê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹
        }
    }

    // ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤹ¤ë¥á¥½¥Ã¥É
    private bool CheckColliderAtPosition(Vector2 position)
    {
        Collider2D hitCollider = Physics2D.OverlapCircle(position, 0.1f, obstacleLayer);
        return hitCollider != null;
    }
}



¡ã¥¢¥×¥í¡¼¥Á£³¡¡¡¼¥¿¥¤¥ë¥Þ¥Ã¥×¤Î¥³¥é¥¤¥À¡¼¤ò¼çÂΤȤ·¤Æ²óÈò¤¹¤ëÊýË¡¡¼¡ä


¡¡¤³¤Á¤é¤ÎÊýË¡¤Ï£²¤ÎÊýË¡¤ò¥Ù¡¼¥¹¤Ë¤·¤¿¥¿¥¤¥ë¥Þ¥Ã¥×¸ÂÄê¤ÎÊýË¡¤Ç¤¹¡£
¥¿¥¤¥ë¥Þ¥Ã¥×¤Î¥³¥é¥¤¥À¡¼¤ò»²¾È¤·¤Æ¡¢ÃƤ¬¥³¥é¥¤¥À¡¼ÆâÉô¤ËÀ¸À®¤µ¤ì¤¿¾ì¹ç¤Ë¤ÏÇ˲õ¤¹¤ë¤³¤È¤Ç²óÈò¤·¤Þ¤¹¡£

¡¡²¼µ­¤Î½èÍý¤òÃƤÎÀ¸À®ÍѤΥ¯¥é¥¹¤ËÄɲä·¤Þ¤¹¡£

    public Tilemap obstacleTilemap; // Êɤä¾ã³²Êª¤ÎTilemap


    // ¥¿¥¤¥ë¥Þ¥Ã¥×¤òÍøÍѤ·¤Æ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤹ¤ë¥á¥½¥Ã¥É
    private bool CheckColliderAtPosition(Vector2 position)
    {
        // ¥¿¥¤¥ëºÂɸ¤ËÊÑ´¹
        Vector3Int cellPosition = obstacleTilemap.WorldToCell(position);

        // ¥¿¥¤¥ë¤Î¼èÆÀ
        TileBase tile = obstacleTilemap.GetTile(cellPosition);

        // ¥¿¥¤¥ë¤¬Â¸ºß¤·¡¢TileCollider¤¬¤¢¤ë¾ì¹ç¤Ï¥³¥é¥¤¥À¡¼¤¬¤¢¤ë¤ÈȽÄê
        return tile != null && tile.GetComponent<TilemapCollider2D>() != null;
    }


¡¡¤³¤Á¤é¤Î¾ì¹ç¤À¤È¡¢¥ì¥¤¥ä¡¼¤Ç¤Ï¤Ê¤¯¥¿¥¤¥ë¥Þ¥Ã¥×¤Î¾ðÊó¤¬É¬Íפˤʤê¤Þ¤¹¡£
¤³¤³¤Ç¤Ï£±¤Ä¤À¤±¤Ç¤¹¤¬¡¢¼ÂºÝ¤Ë¥Þ¥Ã¥×¤Î¿ô¤À¤±È½ÄêÍѤΥ¿¥¤¥ë¥Þ¥Ã¥×¾ðÊó¤¬É¬Íפˤʤ뤿¤á¡¢¥¢¥µ¥¤¥ó¾ðÊó¤¬ÂçÎ̤ˤʤê¤Þ¤¹¡£

¡¡¤½¤Î¤¿¤á¡¢¼ÂºÝ¤Î¥×¥í¥¸¥§¥¯¥È¤Ç¤Î±¿ÍѤò¹Í¤¨¤¿¾ì¹ç¤Ï¡¢²¼µ­¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


    public Tilemap[] obstacleTilemaps; // Êɤä¾ã³²Êª¤ÎTilemap¤ÎÇÛÎó


    // Ê£¿ô¤Î¥¿¥¤¥ë¥Þ¥Ã¥×¤òÍøÍѤ·¤Æ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤹ¤ë¥á¥½¥Ã¥É
    private bool CheckColliderAtPosition(Vector2 position)
    {
        foreach (var tilemap in obstacleTilemaps)
        {
            // ¥¿¥¤¥ëºÂɸ¤ËÊÑ´¹
            Vector3Int cellPosition = tilemap.WorldToCell(position);

            // ¥¿¥¤¥ë¤Î¼èÆÀ
            TileBase tile = tilemap.GetTile(cellPosition);

            // ¥¿¥¤¥ë¤¬Â¸ºß¤·¡¢TileCollider¤¬¤¢¤ë¾ì¹ç¤Ï¥³¥é¥¤¥À¡¼¤¬¤¢¤ë¤ÈȽÄê
            if (tile != null && tile.GetComponent<TileCollider>() != null)
            {
                return true; // ¥³¥é¥¤¥À¡¼¤¬¸«¤Ä¤«¤ì¤Ð¨ºÂ¤Ëtrue¤òÊÖ¤·¤Æ½ªÎ»
            }
        }

        return false; // Ê£¿ô¤Î¥¿¥¤¥ë¥Þ¥Ã¥×¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤â¥³¥é¥¤¥À¡¼¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ïfalse¤òÊÖ¤¹
    }

¡¡¥Þ¥Ã¥×¤òÄɲ乤뤴¤È¤Ë¥¢¥µ¥¤¥ó¾ðÊó¤òÁý¤ä¤µ¤Ê¤¤¤È¤Ê¤é¤Ê¤¤Éôʬ¤È¡¢Â¾¤ËÈæ¤Ù¤Æ½èÍý¤¬Ä¹¤¤¤Î¤¬¥Í¥Ã¥¯¤Ç¤¹¡£


¡ã¥¹¥¯¥ê¥×¥ÈÁ´Ê¸¡ä


¡¡ÃƤÎÀ¸À®¥¯¥é¥¹¤ËÁȤ߹þ¤ó¤À·Á¤Ç¡¢¥µ¥ó¥×¥ë·ÇºÜ¤·¤Æ¤ª¤­¤Þ¤¹¡£¡¡

using UnityEngine;
using UnityEngine.Tilemaps;

public class BulletController : MonoBehaviour
{
    public Tilemap[] obstacleTilemaps; // Êɤä¾ã³²Êª¤ÎTilemap¤ÎÇÛÎó


    // ÃƤÎÀ¸À®¥á¥½¥Ã¥É
    public void SpawnBullet(Vector2 spawnPosition)
    {
        // ÃƤÎÀ¸À®
        GameObject bullet = Instantiate(gameObject, spawnPosition, Quaternion.identity);

        // ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤷ¤Æ·ë²Ì¤ò¼èÆÀ
        bool hasCollider = CheckColliderAtPosition(spawnPosition);

        if (hasCollider)
        {
            // ¥³¥é¥¤¥À¡¼¤¬¤¢¤ë¾ì¹ç¤ÏÃƤò¤¹¤°¤ËÇ˲õ
            Destroy(bullet);
        }
        else
        {
            // ¥³¥é¥¤¥À¡¼¤¬¤Ê¤¤¾ì¹ç¤ÏÄ̾ï¤Î½èÍý¤ò³¹Ô
            // ¤³¤³¤ÇÃƤήÅÙ¤ä°ÜÆ°Êý¸þ¤Ê¤É¤ÎÀßÄê¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹
        }
    }

    // Ê£¿ô¤Î¥¿¥¤¥ë¥Þ¥Ã¥×¤òÍøÍѤ·¤Æ¥³¥é¥¤¥À¡¼¤Î̵ͭ¤òȽÄꤹ¤ë¥á¥½¥Ã¥É
    private bool CheckColliderAtPosition(Vector2 position)
    {
        foreach (var tilemap in obstacleTilemaps)
        {
            // ¥¿¥¤¥ëºÂɸ¤ËÊÑ´¹
            Vector3Int cellPosition = tilemap.WorldToCell(position);

            // ¥¿¥¤¥ë¤Î¼èÆÀ
            TileBase tile = tilemap.GetTile(cellPosition);

            // ¥¿¥¤¥ë¤¬Â¸ºß¤·¡¢TileCollider¤¬¤¢¤ë¾ì¹ç¤Ï¥³¥é¥¤¥À¡¼¤¬¤¢¤ë¤ÈȽÄê
            if (tile != null && tile.GetComponent<TileCollider>() != null)
            {
                return true; // ¥³¥é¥¤¥À¡¼¤¬¸«¤Ä¤«¤ì¤Ð¨ºÂ¤Ëtrue¤òÊÖ¤·¤Æ½ªÎ»
            }
        }

        return false; // Ê£¿ô¤Î¥¿¥¤¥ë¥Þ¥Ã¥×¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤â¥³¥é¥¤¥À¡¼¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¤Ïfalse¤òÊÖ¤¹
    }
}

¡¡obstacleTilemaps¤ËÊ£¿ô¤Î¥¿¥¤¥ë¥Þ¥Ã¥×¤òÀßÄꤷ¡¢forʸ¤Ç³Æ¥¿¥¤¥ë¥Þ¥Ã¥×¤ò½ç¤Ë¥Á¥§¥Ã¥¯¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
ºÇ½é¤Ë¸«¤Ä¤«¤Ã¤¿¥³¥é¥¤¥À¡¼¤¬¤¢¤ë¥¿¥¤¥ë¥Þ¥Ã¥×¤ÇÃƤòÇ˲õ¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£


¤Þ¤È¤á


¡¡¥¢¥×¥í¡¼¥Á¤ÎÊýË¡¤Ï¾¤Ë¤â¤¢¤ê¤Þ¤¹¡£¿§¡¹¤ÊÊýË¡¤ò»î¤·¤Æ¤ß¤ë¤È¤è¤¤¤Ç¤·¤ç¤¦¡£

¡¡º£²ó¤Î¥¢¥×¥í¡¼¥Á¤ÎÃæ¤Ç¤¢¤ì¤Ð¡¢£²¤ÎÊýË¡¤ÎÊý¤¬ÈÆÍÑÀ­¤¬¹â¤¯¡¢¥¢¥µ¥¤¥ó¾ðÊó¤â¥ì¥¤¥ä¡¼¤Î»ØÄê(Ground)£±¸Ä¤À¤±¤ÇºÑ¤à¤Î¤Ç¡¢
ºÎÍѤ¹¤ë¤Ê¤é¡¢¥¢¥×¥í¡¼¥Á£²¤Î¥½¡¼¥¹¥³¡¼¥É¤ÎÊý¤¬¤ª¤¹¤¹¤á¤Ç¤¹¡£

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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