예제 #1
0
    ///マス生成
    static public MapTrout create(List <Arg> aChip)
    {
        MapTrout              tTrout              = MyBehaviour.create <MapTrout>();
        List <Arg>            tMasDataList        = new List <Arg>();                                         //マスのタイル情報リスト
        MapAttributeBehaviour tAttributeBehaviour = tTrout.gameObject.AddComponent <MapAttributeBehaviour>(); //マップ属性

        tAttributeBehaviour.setAttribute(MapBehaviourAttribute.Attribute.none);                               //マップ属性の初期値をnoneに設定
        //マスのタイル情報を読んでリストに
        foreach (Arg tData in aChip)
        {
            Arg tMasData = loadMasData(tData.get <string>("file"), tData.get <int>("x"), tData.get <int>("y"));
            tMasData.set("file", tData.get <string>("file"));
            tMasDataList.Add(tMasData);
            //マップ属性を重ねる
            tAttributeBehaviour.mAttribute.pile(tMasData.get <string>("attribute"));
        }
        //画像設定
        ChildSprite.addSpriteObject(tTrout.gameObject, new Arg(new Dictionary <string, object>()
        {
            { "pile", tMasDataList }
        }), kDirPath);
        //collider設定
        if (tAttributeBehaviour.mAttribute.attribute != MapBehaviourAttribute.Attribute.flat &&
            tAttributeBehaviour.mAttribute.attribute != MapBehaviourAttribute.Attribute.none)
        {
            BoxCollider2D tBox = tTrout.gameObject.AddComponent <BoxCollider2D>();
            tBox.size = new Vector2(1, 1);
        }
        return(tTrout);
    }
예제 #2
0
    ///引数の距離だけ移動できるか(ColliderがBoxCollider2dであること前提)
    private MapPassType confirmPassBy(Vector2 aVector)
    {
        BoxCollider2D tBox = (BoxCollider2D)mCollider;

        //当たり判定をとる
        Collider2D[] tColliders = Physics2D.OverlapBoxAll(
            new Vector2(tBox.bounds.center.x + aVector.x, tBox.bounds.center.y + aVector.y), tBox.size, 0);
        bool tStopFlag = false;

        //当たったcolliderの確認
        foreach (Collider2D tCollider in tColliders)
        {
            if (tCollider == tBox)
            {
                continue;                   //自分のcollider
            }
            MapAttributeBehaviour tAttributeBehaviour = tCollider.gameObject.GetComponent <MapAttributeBehaviour>();
            if (tAttributeBehaviour == null)
            {
                continue;
            }                                             //衝突した相手にマップ属性なし(通過してOK)
            MapPassType tPassType = tAttributeBehaviour.confirmPassType(mMyAttributeBehaviour);
            //通過不可
            if (tPassType == MapPassType.collision)
            {
                return(MapPassType.collision);
            }
            //停止
            if (tPassType == MapPassType.stop)
            {
                tStopFlag = true;
            }
        }
        return((tStopFlag) ? MapPassType.stop : MapPassType.passing);
    }
예제 #3
0
    //colliderの通過を許可するか
    public MapPassType confirmPassType(MapAttributeBehaviour aBehaviour)
    {
        if (mStayEvent == null)
        {
            if (Physics2D.IsTouching(aBehaviour.GetComponents <Collider2D>()[0], this.GetComponents <Collider2D>()[0]))
            {
                return(MapPassType.passing);//stayイベントがない かつ 既に接触している → 通過可
            }
        }

        if (equal(aBehaviour.gameObject, mTrigger))
        {
            return((MapPassType)Enum.Parse(typeof(MapPassType), mTrigger.get <string>("passType"), true));
        }
        else
        {
            return(MapPassType.passing);
        }
    }
 ///引数のマップ属性が自分を通過できるか
 virtual public MapPassType confirmPassType(MapAttributeBehaviour aBehaviour)
 {
     if (mAttribute.getAttributeType() == MapBehaviourAttribute.AttributeType.mapEvent)
     {
         //自分がeventのcolliderの時
         return(gameObject.GetComponent <MapEventTrigger>().confirmPassType(aBehaviour));
     }
     else
     {
         //自分がeventのcollider以外の時
         if (aBehaviour.mAttribute.canPass(mAttribute))
         {
             return(MapPassType.passing);
         }
         else
         {
             return(MapPassType.collision);
         }
     }
 }
예제 #5
0
 private void Awake()
 {
     mCollider             = gameObject.GetComponents <Collider2D>()[0];
     mMyAttributeBehaviour = gameObject.GetComponent <MapAttributeBehaviour>();
 }