Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Unity 2D Помогите

Короче, решил значит я создать врага, который будет стрелять лазером. Вообще не представляю как это закодировать. Возможно это можно сделать с помощью отрисовки Gizmos? Но даже если это так, то как сделать чтобы линия в виде лазера рисовалась до первого коллайдера? Чтобы лазер при столкновении со стеной просто заканчивался. Помогите пожалуйста, до этого с отрисовкой линий никогда не работал.

По дате
По рейтингу
Аватар пользователя
Высший разум

Ты можешь использовать `RaycastHit2D` и `Physics2D.Raycast` для этого. Этот метод отправляет луч от начальной точки в определенном направлении и возвращает информацию о первом столкновении с коллайдером.

```csharp

1234567
 void Update() { 
    RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.up); 
    if (hit.collider != null) { 
        Debug.DrawLine(transform.position, hit.point, Color.red); //Отрисовка линии до точки столкновения 
    } 
} 
 


```

В этом примере `transform.position` - это начальная точка (позиция врага), `transform.up` - это направление (вверх относительно врага). `Debug.DrawLine` используется для отрисовки лазера. Вместо него можно использовать `LineRenderer` для более контролируемой отрисовки линии.

Помни, что этот код нужно поместить в скрипт, привязанный к объекту врага, и этот объект должен быть направлен вверх, чтобы `transform.up` указывало в правильном направлении.