Pro_Unit

RayCast Example

Aug 22nd, 2019
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.63 KB | None | 0 0
  1.   [SerializeField] ContactFilter2D _contactFilter2D;//? настройки макинага рейкаста, котго пропустить а кого замечать
  2.         const string PlayerTag = "Player"; //? тэг игрока (cons для оптимизации)
  3.         [SerializeField] GameObject Player; //? ссылка на игрока
  4.         [SerializeField] Rigidbody _bulletPrefab; //? префаб пульки со своим скриптом
  5.         [SerializeField] Transform _launchPoint;//? точка из которой стреляет турель
  6.         [SerializeField] float _firePower = 10f; //? мощьность пули
  7.  
  8.         private void OnTriggerEnter (Collider other)
  9.         {
  10.             if (other.CompareTag (PlayerTag))
  11.             {
  12.  
  13.                 //? вычисляем направление до игрока    
  14.                 Vector3 direction = Player.transform.position - transform.position;
  15.                 //? нормалзуем вектора направления(делаем длину ветора равной 1)
  16.                 direction.Normalize ();
  17.                 //? здесь будет информация о том с чем столнулся Raycast
  18.                 List<RaycastHit2D> hit2Ds = new List<RaycastHit2D> ();
  19.  
  20.                 //? Делаем собсвенно сам рейкаст до игрока
  21.                 bool ishit = Physics2D.Raycast (transform.position, direction, _contactFilter2D, hit2Ds) > 0; //? сразу делаем проверкку, вдруг не солкнетсяни с кем
  22.  
  23.                 if (ishit)
  24.                 {
  25.                     //? проходим по списку всех столкновений
  26.                     foreach (var hit in hit2Ds)
  27.                     {
  28.                         //? проверяем если столкнулисьм игроком, по тэгу
  29.                         bool isPlayer = hit.collider.gameObject.CompareTag (PlayerTag);
  30.                         if (isPlayer)
  31.                         {
  32.                             //? Создаем пульку на месте турли из точки запуска
  33.                             var bulet = Instantiate(_bulletPrefab,_launchPoint.position,Quaternion.identity);
  34.  
  35.                             //? вычиляем силу
  36.                             Vector3 force = direction * _firePower;
  37.                             //? запускам пулю по силе
  38.                             bulet.AddForce(force);
  39.                         }
  40.                     }
  41.                 }
  42.  
  43.             }
  44.         }
Add Comment
Please, Sign In to add comment