おそらく、GetIgnoreLayerCollisionで問い合わせて、自前で組み立ててやる必要があるのではないかと思います。
こんな方法でいかがでしょうか?
C#
1using System;
2using UnityEngine;
3
4public class CollisionLayerMaskGenerator : MonoBehaviour
5{
6 public static int GetCollisionLayerMask(string layerName)
7 {
8 return GetCollisionLayerMask(LayerMask.NameToLayer(layerName));
9 }
10
11 public static int GetCollisionLayerMask(int layerIndex)
12 {
13 var mask = ~0;
14 for (var i = 0; i < 32; i++)
15 {
16 if (Physics.GetIgnoreLayerCollision(layerIndex, i))
17 {
18 mask &= ~(1 << i);
19 }
20 }
21
22 return mask;
23 }
24
25 private void Start()
26 {
27 // どのようなマスクが生成されるか実験
28 for (var layerIndex = 0; layerIndex < 32; layerIndex++)
29 {
30 var layerName = LayerMask.LayerToName(layerIndex);
31 if (string.IsNullOrEmpty(layerName))
32 {
33 layerName = "Layer " + layerIndex;
34 }
35 Debug.LogFormat("{0} ({1})", Convert.ToString(GetCollisionLayerMask(layerIndex), 2), layerName);
36 }
37 }
38}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/15 09:22
2018/08/15 09:31