Advertisement
sergezhu

Transporter.cs

Dec 5th, 2020
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.47 KB | None | 0 0
  1. public class Transporter : MonoBehaviour
  2. {
  3.     public Vector3 direction { get { return (_endPoint.position - _startPoint.position).normalized; } }
  4.    
  5.     [SerializeField] private GameObject _element;
  6.    
  7.     [Header("Transporter Settings")]
  8.     [SerializeField] private Transform _startPoint;
  9.     [SerializeField] private Transform _endPoint;
  10.     [SerializeField] private int _count;
  11.  
  12.     private Transform _transform;
  13.     private Transform _firstElement;
  14.     private Rigidbody _firstRigidbody;
  15.     private Vector3 _offset;
  16.  
  17.     public void ResetPosition(Transform target)
  18.     {
  19.         target.position = _firstElement.position + _offset;
  20.         _firstElement = target;
  21.     }
  22.  
  23.     private void Awake()
  24.     {
  25.         _transform = transform;
  26.  
  27.         CreateLine();
  28.     }    
  29.  
  30.     private void CreateLine()
  31.     {
  32.         for(int i=0; i<_count; i++)
  33.         {
  34.             Vector3 pos = Vector3.Lerp(_startPoint.position, _endPoint.position, (float)i / (float)(_count - 1));
  35.             GameObject instantiated = Instantiate(_element, pos, Quaternion.identity);
  36.             instantiated.name = "element" + i;
  37.  
  38.             instantiated.transform.parent = _transform;
  39.  
  40.             if (i == 0)
  41.             {
  42.                 _firstElement = instantiated.transform;
  43.                 _firstRigidbody = instantiated.GetComponent<Rigidbody>();
  44.             }
  45.            
  46.             if (i == 1) _offset = _firstElement.transform.position - pos;
  47.         }
  48.     }    
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement