public RaycastBoxThreePointProvider(Collider c) { Ensure.ArgumentNotNull(c, "c"); var t = c.transform; var m = new ColliderMeasurement(c, false); _points[0] = m.center + new Vector3(0f, -m.extents.y, 0f); _points[1] = m.center + new Vector3(0f, -m.extents.y, m.extents.z); _points[2] = m.center + new Vector3(0f, -m.extents.y, -m.extents.z); _pendingHighMaxes = new HighPointList(2, t.TransformPoint(_points[1])); }
public HeightMapBoxFivePointProvider(Collider c) { Ensure.ArgumentNotNull(c, "c"); var t = c.transform; var m = new ColliderMeasurement(c, false); var yoffset = -m.extents.y; _points[0] = m.center + new Vector3(0f, yoffset, 0f); _points[1] = m.center + new Vector3(m.extents.x, yoffset, -m.extents.z); _points[2] = m.center + new Vector3(-m.extents.x, yoffset, -m.extents.z); _points[3] = m.center + new Vector3(-m.extents.x, yoffset, m.extents.z); _points[4] = m.center + new Vector3(m.extents.x, yoffset, m.extents.z); _pendingHighMaxes = new HighPointList(2, t.TransformPoint(_points[3])); }
/// <summary> /// Recalculates the base position and unit height. Call this if the unit's size changes at runtime /// </summary> public void RecalculateBasePosition() { var rb = this.GetComponent<Rigidbody>(); var coll = this.GetComponent<Collider>(); var renderer = this.GetComponent<Renderer>(); if (rb != null && rb.useGravity) { yAxisoffset = 0.0f; } float totalOffset; if (coll != null) { //We need to adjust the collider to take the collider overlap into consideration var m = new ColliderMeasurement(coll, true); totalOffset = m.extents.y - m.transformCenterOffset.y + this.yAxisoffset; this.height = m.size.y + this.yAxisoffset; if (rb != null && rb.useGravity) { #if UNITY_5 totalOffset -= (2 * coll.contactOffset); #else totalOffset -= (2 * Physics.minPenetrationForPenalty); #endif } } else if (renderer != null) { var posOffset = (this.position.y - renderer.bounds.center.y); totalOffset = renderer.bounds.extents.y + posOffset + this.yAxisoffset; this.height = renderer.bounds.size.y + this.yAxisoffset; } else { totalOffset = this.yAxisoffset; } this.baseToPositionOffset = totalOffset; }