void AddClimb(GameObject gao, AdditionalTypeFlags type, Material mat, Color color, float height, float baseHeight, List <MeshFilter> addMeshes) { int numBars = Mathf.RoundToInt(height - baseHeight); for (int i = 0; i < numBars; i++) { GameObject sgao = new GameObject($"Fence {i}"); sgao.layer = LayerMask.NameToLayer("3D Collision"); sgao.transform.SetParent(gao.transform); sgao.transform.localScale = Vector3.one; MeshFilter smf = sgao.AddComponent <MeshFilter>(); switch (type) { case AdditionalTypeFlags.ClimbUpRight: sgao.transform.localPosition = new Vector3(0, baseHeight + i + 0.5f, -0.55f); smf.mesh = GeometryHelpers.CreateBox(1f, 0.2f, 0.1f); break; case AdditionalTypeFlags.ClimbUpLeft: sgao.transform.localPosition = new Vector3(0.55f, baseHeight + i + 0.5f, 0); smf.mesh = GeometryHelpers.CreateBox(0.1f, 0.2f, 1f); break; } addMeshes.Add(smf); /*MeshRenderer smr = sgao.AddComponent<MeshRenderer>(); * smr.sharedMaterial = mat;*/ } }
void AddFence(GameObject gao, AdditionalTypeFlags type, Material mat, Color color, float height, List <MeshFilter> addMeshes, float fenceHeight = 4f) { int numBars = 3; for (int i = 0; i < numBars; i++) { GameObject sgao = new GameObject($"Fence {i}"); sgao.layer = LayerMask.NameToLayer("3D Collision"); sgao.transform.SetParent(gao.transform); sgao.transform.localScale = Vector3.one; switch (type) { case AdditionalTypeFlags.FenceUpLeft: sgao.transform.localPosition = new Vector3(-(0.5f - 0.05f), height, ((float)(i + 0.5f)) / (numBars) - 0.5f); break; case AdditionalTypeFlags.FenceUpRight: sgao.transform.localPosition = new Vector3(((float)(i + 0.5f)) / (numBars) - 0.5f, height, 0.5f - 0.05f); break; case AdditionalTypeFlags.FenceDownRight: sgao.transform.localPosition = new Vector3((0.5f - 0.05f), height, ((float)(i + 0.5f)) / (numBars) - 0.5f); break; case AdditionalTypeFlags.FenceDownLeft: sgao.transform.localPosition = new Vector3(((float)(i + 0.5f)) / (numBars) - 0.5f, height, -(0.5f - 0.05f)); break; } MeshFilter smf = sgao.AddComponent <MeshFilter>(); smf.mesh = GeometryHelpers.CreateBoxDifferentHeights(0.1f, fenceHeight, fenceHeight, fenceHeight, fenceHeight); addMeshes.Add(smf); /*MeshRenderer smr = sgao.AddComponent<MeshRenderer>(); * smr.sharedMaterial = mat;*/ } }