@armageddon234

Как сделать рикошет пуль от Tilemap'a?

Unity 2D. У меня есть Tilemap карта и есть персонаж с оружием, который умеет стрелять в любом направлении. Мне нужно чтобы когда пуля долетала до Tilemap, пуля рикошетила. Не знаю как это реализовать, даже нейросеть мне не смогла помочь, так как я чего-то не знаю.
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
@DrRen7
надо поиграть с вектором пули и нормалью поверхности, накидал быстрый скрипт как идею но лучше все довести до ума
Camera _mCam;
   Vector2 _mousePos;
   [SerializeField] ContactFilter2D _filders;
   RaycastHit2D[] _hits;
   LineRenderer _lineRenderer;
   private void Start()
   {
       _mCam=Camera.main;
       _hits=new RaycastHit2D[1];
       _lineRenderer = gameObject.AddComponent<LineRenderer>();
       _lineRenderer.widthMultiplier = 0.2f;
       _lineRenderer.positionCount = 3;
   }

   private void Update()
   {
       
       Vector2 mousePos = _mCam.ScreenToWorldPoint(Input.mousePosition);
       if(Physics2D.Linecast(transform.position, mousePos, _filders, _hits)>0)
       {
           _lineRenderer.enabled = true;
           _lineRenderer.SetPosition(0, transform.position);
           _lineRenderer.SetPosition(1, _hits[0].point);
           Vector2 v2= _hits[0].point- (Vector2)transform.position; // делаю вектор направления 
           _lineRenderer.SetPosition(2, v2*_hits[0].normal); // умножаю вектор направления на нормаль

       }
       else
       {
           _lineRenderer.enabled = false;
       } 
   }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы