static int _m_SetObjectShapeCollider_xlua_st_(RealStatePtr L) { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); try { { UnityEngine.GameObject targetObject = (UnityEngine.GameObject)translator.GetObject(L, 1, typeof(UnityEngine.GameObject)); Neptune.ShapeInfo shapeInfo = (Neptune.ShapeInfo)translator.GetObject(L, 2, typeof(Neptune.ShapeInfo)); xc.Dungeon.LevelObjectHelper.SetObjectShapeCollider(targetObject, shapeInfo); return(0); } } catch (System.Exception __gen_e) { return(LuaAPI.luaL_error(L, "c# exception:" + __gen_e)); } }
/// <summary> /// 设置shape信息的Collider /// </summary> /// <param name="targetObject"></param> /// <param name="shapeInfo"></param> static public void SetObjectShapeCollider(GameObject targetObject, Neptune.ShapeInfo shapeInfo) { if (targetObject == null || shapeInfo == null) { Debug.LogError("[LevelObjectHelper SetObjectShapeCollider Error]: targetObject or shapeInfo is null"); return; } switch (shapeInfo.Type) { case Neptune.ShapeType.SPHERE: // 需要触发的时候才添加Collider组件 if (shapeInfo.IsTrigger) { var sphereCollider = targetObject.AddComponent <SphereCollider>(); sphereCollider.radius = shapeInfo.SphereRadius; sphereCollider.isTrigger = true; } break; case Neptune.ShapeType.BOX: if (shapeInfo.IsTrigger) { var boxCollider = targetObject.AddComponent <BoxCollider>(); boxCollider.size = shapeInfo.BoxSize; boxCollider.isTrigger = true; } break; default: Debug.LogError("[LevelObjectHelper SetObjectShapeCollider Error]: shapeType error"); break; } }