Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unity 2D Помогите

Илья Тарасенко Знаток (252), на голосовании 8 месяцев назад
Короче, решил значит я создать врага, который будет стрелять лазером. Вообще не представляю как это закодировать. Возможно это можно сделать с помощью отрисовки Gizmos? Но даже если это так, то как сделать чтобы линия в виде лазера рисовалась до первого коллайдера? Чтобы лазер при столкновении со стеной просто заканчивался. Помогите пожалуйста, до этого с отрисовкой линий никогда не работал.
Голосование за лучший ответ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (144322) 9 месяцев назад
Ты можешь использовать `RaycastHit2D` и `Physics2D.Raycast` для этого. Этот метод отправляет луч от начальной точки в определенном направлении и возвращает информацию о первом столкновении с коллайдером.

```csharp
 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` указывало в правильном направлении.
Илья ТарасенкоЗнаток (252) 9 месяцев назад
Афигеть, никогда так ещё быстро не получал ответы на вопросы. Спасибо большое, сейчас попробую! Сначала хотя бы так, а потом если время будет попробую изучить LineRenderer.
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (144322) Илья Тарасенко, Пожалуйста, обращайся в любое время! Рад был помочь. Удачи тебе в освоении Unity и LineRenderer. Если возникнут еще вопросы – не стесняйся задавать.
Похожие вопросы