○コライダ(当たり判定)を取り出す
TilePaletteを作成する際に,チップ画像ファイル毎にCollider Typeを設定しました
この値は,一旦TileやAnimatedTileにキャストして,それぞれ取り出す必要があります
//コライダを取り出す
if(mapchip[0] is Tile){
Tile tile=(Tile)mapchip[20];
if(tile.colliderType == Tile.ColliderType.None){
Debug.Log("ColliderType.None");
}else if(tile.colliderType == Tile.ColliderType.Sprite){
Debug.Log("ColliderType.Sprite");
}else if(tile.colliderType == Tile.ColliderType.Grid){
Debug.Log("ColliderType.Grid");
}else{
Debug.Log("Unknown:"+tile.colliderType);
}
}else if(mapchip[0] is AnimatedTile){
AnimatedTile animatedtile=(AnimatedTile)mapchip[0];
if(animatedtile.m_TileColliderType == Tile.ColliderType.None){
Debug.Log("ColliderType.None");
}else if(animatedtile.m_TileColliderType == Tile.ColliderType.Sprite){
Debug.Log("ColliderType.Sprite");
}else if(animatedtile.m_TileColliderType == Tile.ColliderType.Grid){
Debug.Log("ColliderType.Grid");
}else{
Debug.Log("Unknown:"+animatedtile.m_TileColliderType);
}
}else{
Debug.Log("Unknown object");
}
○Tilemap上のコライダを取り出す
Tilemapに配置してあるチップ画像のコライダを取り出す方法です
取り出したい位置をGetTileして,TileBaseに設定してあるColliderTypeを取得する
//Tilemap上に置いたチップ画像のコライダ取得
TileBase tilebasechip=tilemap1.GetTile(new Vector3Int(0, 0, 0));
//コライダを取り出す
Tile.ColliderType collidertype;
if(tilebasechip is Tile){
collidertype=(tilebasechip as Tile).colliderType;
}else if(tilebasechip is AnimatedTile){
collidertype=(tilebasechip as AnimatedTile).m_TileColliderType;
}else{
//何もない場所なのでコライダも無し
collidertype=Tile.ColliderType.None;
}
//コライダを判別する
switch(collidertype){
case Tile.ColliderType.None:
Debug.Log("ColliderType.None");
break;
case Tile.ColliderType.Sprite:
Debug.Log("ColliderType.Sprite");
break;
case Tile.ColliderType.Grid:
Debug.Log("ColliderType.Grid");
break;
default:
Debug.Log("Unknown:"+collidertype);
break;
}
GetTileした後は上と同じですので,コライダ状況の判別を統一するように書いてみました