示例#1
0
        private void AddPartFromPrefab(GameObject prefab)
        {
            var part = Instantiate(prefab, transform).transform;

            Vector3 position = Vector3.zero;

            if (_parts.Count == 1)
            {
                var face = Face;
                position = face.localPosition - face.forward;
                _world.ChangePositionInWorldBorders(ref position);
            }
            else if (_parts.Count >= 2)
            {
                var lastPart    = _parts[_parts.Count - 1];
                var preLastPart = _parts[_parts.Count - 2];

                if (Vector3.Distance(_prevPositionNextPart, lastPart.localPosition) <= 1)
                {
                    position = _prevPositionNextPart.ConvertToInt();
                }
                else
                {
                    position = lastPart.localPosition - (preLastPart.localPosition - lastPart.localPosition);
                }

                _world.ChangePositionInWorldBorders(ref position);
            }

            part.localPosition = position;

            _parts.Add(part);
        }