public Vector3 GetStartPosition(GameObject _object, Vector3 _offset) { if (_object == null) { return(Vector3.zero); } if (AttachedCollider == null) { AttachedCollider = GetComponent <BoxCollider>(); } Vector3 _point = AttachedCollider.bounds.ClosestPoint(_object.transform.position); Vector3 _point_offset = PositionTools.FixInverseTransformPoint(AttachedCollider.transform, _point); Vector3 _size = AttachedCollider.size * 0.5f; _point_offset.z = (_point_offset.z < 0 ? _point_offset.z + _size.z: _point_offset.z - _size.z); _point_offset.x = (_point_offset.x < 0 ? _point_offset.x + _size.x : _point_offset.x - _size.x); _point_offset += ClimbingOffset + _offset; _point = PositionTools.FixTransformPoint(AttachedCollider.transform, _point_offset); _start_point = _point; return(_point); }