|
@@ -155,9 +155,9 @@ namespace GFGGame
|
|
|
}
|
|
|
|
|
|
|
|
|
- public static void UpdatePhotographBgOrNpcOrBorder(GameObject sceneObj, EnumPhotographType type, int itemId)
|
|
|
+ public static void UpdatePhotographBgOrNpcOrBorder(GameObject sceneObj, EnumPhotographType type, int itemId, int maxlayer, out int maxLayer)
|
|
|
{
|
|
|
-
|
|
|
+ maxLayer = maxlayer;
|
|
|
string objName = "";
|
|
|
ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
|
|
|
var resPath = ""; ResPathUtil.GetDressUpPath(itemCfg.res, ItemUtil.GetItemResExt(itemCfg.itemType, itemCfg.subType));
|
|
@@ -196,12 +196,20 @@ namespace GFGGame
|
|
|
{
|
|
|
ItemTypeCfg typeCfg = ItemTypeCfgArray.Instance.GetCfg(ConstDressUpItemType.BEI_JING);
|
|
|
spr.sortingOrder = typeCfg.defaultLayer;
|
|
|
- return;
|
|
|
+
|
|
|
+ }
|
|
|
+ if (type == EnumPhotographType.NPC)
|
|
|
+ {
|
|
|
+ maxlayer++;
|
|
|
+ maxLayer = maxlayer;
|
|
|
+ spr.sortingOrder = maxLayer;
|
|
|
}
|
|
|
+ if (type != EnumPhotographType.BORDER)//边框不加碰撞盒
|
|
|
+ {
|
|
|
|
|
|
- if (type == EnumPhotographType.BORDER) return;//边框不加碰撞盒
|
|
|
+ PhotographAddCollider(tf.gameObject);
|
|
|
+ }
|
|
|
|
|
|
- PhotographAddCollider(tf.gameObject);
|
|
|
}
|
|
|
//添加碰撞盒
|
|
|
public static void PhotographAddCollider(GameObject gameObject)
|
|
@@ -219,7 +227,7 @@ namespace GFGGame
|
|
|
|
|
|
|
|
|
//场景添加单个道具
|
|
|
- public static void AddScene(GameObject sceneObj, int itemId, int index)
|
|
|
+ public static void AddScene(GameObject sceneObj, int itemId, int index, int resLayer = int.MinValue)
|
|
|
{
|
|
|
ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
|
|
|
//普通层
|
|
@@ -227,7 +235,7 @@ namespace GFGGame
|
|
|
{
|
|
|
var parentGameObj = new GameObject(string.Format("{0}_{1}_{2}", itemId, index, itemCfg.resLayer1));
|
|
|
parentGameObj.transform.SetParent(sceneObj.transform.Find("Scene"), false);
|
|
|
- DressUpUtil.AddItem(itemId, sceneObj, false, false, parentGameObj, itemCfg.resLayer1);
|
|
|
+ DressUpUtil.AddItem(itemId, sceneObj, false, false, parentGameObj, itemCfg.resLayer1, resLayer);
|
|
|
SceneController.PhotographAddCollider(parentGameObj.transform.GetChild(0).gameObject);
|
|
|
|
|
|
}
|
|
@@ -236,20 +244,11 @@ namespace GFGGame
|
|
|
{
|
|
|
var parentGameObj = new GameObject(string.Format("{0}_{1}_{2}", itemId, index, itemCfg.resLayer2));
|
|
|
parentGameObj.transform.SetParent(sceneObj.transform.Find("Scene"), false);
|
|
|
- DressUpUtil.AddItem(itemId, sceneObj, false, false, parentGameObj, itemCfg.resLayer2);
|
|
|
+ DressUpUtil.AddItem(itemId, sceneObj, false, false, parentGameObj, itemCfg.resLayer2, resLayer);
|
|
|
SceneController.PhotographAddCollider(parentGameObj.transform.GetChild(0).gameObject);
|
|
|
|
|
|
}
|
|
|
- // for (int i = 0; i < parentGameObj.transform.childCount; i++)
|
|
|
- // {
|
|
|
- // var parentGameObj = new GameObject(string.Format("{0}_{1}", itemId, index));
|
|
|
- // parentGameObj.transform.SetParent(sceneObj.transform.Find("Scene"), false);
|
|
|
|
|
|
- // DressUpUtil.AddItem(itemId, sceneObj, false, false, parentGameObj);
|
|
|
-
|
|
|
- // GameObject childGameObj = parentGameObj.transform.GetChild(i).gameObject;
|
|
|
- // SceneController.PhotographAddCollider(childGameObj);
|
|
|
- // }
|
|
|
}
|
|
|
//传入父物体,根据所有子物体大小计算父物体边框大小
|
|
|
public static Vector2 GetGameObjectSize(GameObject parentObj)
|
|
@@ -261,7 +260,7 @@ namespace GFGGame
|
|
|
BoxCollider2D boxCollider2D = childGameObj.GetComponent<BoxCollider2D>();
|
|
|
if (boxCollider2D != null)
|
|
|
{
|
|
|
- return boxCollider2D.size * 100;
|
|
|
+ return boxCollider2D.size * childGameObj.transform.localScale * 100;
|
|
|
}
|
|
|
}
|
|
|
return Vector2.zero;
|
|
@@ -309,5 +308,22 @@ namespace GFGGame
|
|
|
angle *= Mathf.Sign(Vector3.Dot(normal, Vector3.forward)); //Mathf.Sign()求符号,Vector3.Dot()求方向,求法线向量与物体上方向向量点乘,结果为1或-1,修正旋转方向
|
|
|
return angle;
|
|
|
}
|
|
|
+
|
|
|
+ public static GameObject GetFirstHitObj(RaycastHit2D[] hit2Ds)
|
|
|
+ {
|
|
|
+ int layer = int.MinValue;
|
|
|
+ GameObject gameObject = null;
|
|
|
+ for (int i = 0; i < hit2Ds.Length; i++)
|
|
|
+ {
|
|
|
+ SpriteRenderer spr = hit2Ds[i].collider.gameObject.GetComponent<SpriteRenderer>();
|
|
|
+
|
|
|
+ if (spr && spr.sortingOrder > layer)
|
|
|
+ {
|
|
|
+ gameObject = hit2Ds[i].collider.gameObject;
|
|
|
+ layer = spr.sortingOrder;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return gameObject;
|
|
|
+ }
|
|
|
}
|
|
|
}
|