Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [SerializeField] ContactFilter2D _contactFilter2D;//? настройки макинага рейкаста, котго пропустить а кого замечать
- const string PlayerTag = "Player"; //? тэг игрока (cons для оптимизации)
- [SerializeField] GameObject Player; //? ссылка на игрока
- [SerializeField] Rigidbody _bulletPrefab; //? префаб пульки со своим скриптом
- [SerializeField] Transform _launchPoint;//? точка из которой стреляет турель
- [SerializeField] float _firePower = 10f; //? мощьность пули
- private void OnTriggerEnter (Collider other)
- {
- if (other.CompareTag (PlayerTag))
- {
- //? вычисляем направление до игрока
- Vector3 direction = Player.transform.position - transform.position;
- //? нормалзуем вектора направления(делаем длину ветора равной 1)
- direction.Normalize ();
- //? здесь будет информация о том с чем столнулся Raycast
- List<RaycastHit2D> hit2Ds = new List<RaycastHit2D> ();
- //? Делаем собсвенно сам рейкаст до игрока
- bool ishit = Physics2D.Raycast (transform.position, direction, _contactFilter2D, hit2Ds) > 0; //? сразу делаем проверкку, вдруг не солкнетсяни с кем
- if (ishit)
- {
- //? проходим по списку всех столкновений
- foreach (var hit in hit2Ds)
- {
- //? проверяем если столкнулисьм игроком, по тэгу
- bool isPlayer = hit.collider.gameObject.CompareTag (PlayerTag);
- if (isPlayer)
- {
- //? Создаем пульку на месте турли из точки запуска
- var bulet = Instantiate(_bulletPrefab,_launchPoint.position,Quaternion.identity);
- //? вычиляем силу
- Vector3 force = direction * _firePower;
- //? запускам пулю по силе
- bulet.AddForce(force);
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment