|
13.09.2010, 21:52
|
#1
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Самонаводящиеся ракеты
Основываясь на примере ffinder'a я решил написать C# версию скрипта самонаводящейся ракеты:
using UnityEngine;
public class HomingMissile : MonoBehaviour { // цель для ракеты public Transform target; // префаб взрыва public GameObject explosionPrefab; // скорость ракеты public float speed = 10; // скорость поворота ракеты public float turnSpeed = 100; // время до взрыва public float explosionTime = 5;
// трансформ текущего объекта для оптимизации обращений к нему private Transform _thisTransform;
public void Awake() { _thisTransform = transform; }
public void Update() { // уменьшаем таймер explosionTime -= Time.deltaTime;
// если время таймера истекло, то взрываем ракету if (explosionTime <= 0) { Explode(); return; }
// величина движения вперед Vector3 movement = _thisTransform.forward * speed * Time.deltaTime;
// если указана цель if (target != null) { // направление на цель Vector3 direction = target.position - _thisTransform.position;
// максимальный угол поворота в текущий кадр float maxAngle = turnSpeed * Time.deltaTime;
// угол между направлением на цель и направлением ракеты float angle = Vector3.Angle(_thisTransform.forward, direction);
if (angle <= maxAngle) { // угол меньше максимального, значит поворачиваем на цель _thisTransform.forward = direction.normalized; } else { //сферическая интерполяция направления с использованием максимального угла поворота _thisTransform.forward = Vector3.Slerp(_thisTransform.forward, direction.normalized, maxAngle / angle); }
// расстояние до цели float distanceToTarget = direction.magnitude;
// если расстояние мало, то создаем взрыв if (distanceToTarget < movement.magnitude) { Explode(); return; } }
// двигамет ракету вперед _thisTransform.position += movement; }
public void Explode() { if (explosionPrefab != null) { Instantiate(explosionPrefab, _thisTransform.position, _thisTransform.rotation); } // уничтожаем ракету Destroy(gameObject); }
// взрываем при коллизии public void OnCollisionEnter() { Explode(); } }
Последний раз редактировалось pax, 14.09.2010 в 02:50.
|
(Offline)
|
|
Эти 8 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
13.09.2010, 21:57
|
#2
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Самонаводящиеся ракеты
Vector3 movement = _thisTransform.forward * speed * Time.deltaTime;
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.09.2010, 21:59
|
#3
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Самонаводящиеся ракеты
Сообщение от .Squid
Vector3 movement = _thisTransform.forward * speed * Time.deltaTime;
|
Когда кто-то прочитал твой код, значит время потрачено не зря
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.09.2010, 22:23
|
#4
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Самонаводящиеся ракеты
Мне просто интересно было, летит ли ракета как-то эффектно - по дуге там какой, или по спирали, или просто плавно поворачиваясь на цель.
__________________
|
(Offline)
|
|
13.09.2010, 23:26
|
#5
|
Модератор
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений (для 1,694 пользователей)
|
Ответ: Самонаводящиеся ракеты
супер . побольше бы таких скриптов с такими комментариями. хоть язык бы изучил этот.
|
(Offline)
|
|
14.09.2010, 15:24
|
#6
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Самонаводящиеся ракеты
Короче, дорогие мои, я реально зол. Есть две причины.
1. Я дал скрипт - и тишина. Пакс переписал его на шарп - ему спасибо.
2. Если вся суть уроков в том, чтобы писать уже готовые компоненты и каждую строчку комментировать - я против. Это ничему не учит, кроме как ждать когда все сделают за тебя.
Вот такой вот баттхёрт.
|
(Offline)
|
|
14.09.2010, 15:32
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Самонаводящиеся ракеты
Сообщение от ffinder
Короче, дорогие мои, я реально зол. Есть две причины.
1. Я дал скрипт - и тишина. Пакс переписал его на шарп - ему спасибо.
2. Если вся суть уроков в том, чтобы писать уже готовые компоненты и каждую строчку комментировать - я против. Это ничему не учит, кроме как ждать когда все сделают за тебя.
Вот такой вот баттхёрт.
|
Когда я пишу уроки, я стараюсь описать что делаю. Комментарии необходимы, чтобы понять как оно работает. В данном случае это не урок, а просто скрипт, если хотите, то перенесем это в другой подраздел и назовем его готовые скрипты а не уроки.
PS: на самом деле я думал что нажал на "спасибо"...
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.09.2010, 15:35
|
#8
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Самонаводящиеся ракеты
Сообщение от ffinder
Короче, дорогие мои, я реально зол. Есть две причины.
1. Я дал скрипт - и тишина. Пакс переписал его на шарп - ему спасибо.
|
это булка 20-10. такое бывает часто
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
14.09.2010, 15:50
|
#9
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Самонаводящиеся ракеты
Если инициатор недовольства я - то я могу удалить эту тему. Мне не важны за нее благодарности. Я просто проделал работу, которую посчитал необходимой. Многие не знаю языка Boo. И как получилось - C#'a тоже не особо.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
14.09.2010, 16:11
|
#10
|
Модератор
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений (для 1,694 пользователей)
|
Ответ: Самонаводящиеся ракеты
да, не особо. я пока вообще не силен в юнайте. после блица не могу отойти.
и ненадо. откуда брать ТАКИЕ простые примеры - я не знаю, так почти ничего и не нашел, а с такого начинать - самое-то. изменил строчку - смотришь результат. и так далее.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.09.2010, 17:45
|
#11
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Самонаводящиеся ракеты
На мой взгляд эта ваша система компонентов ничему не учит.
От этих ваших компонентов, которые всегда будут использоваться бездумно происходит разжижение. Я уже насмотрелся на вашу тему про лок мыши. Ржач полный.
Как хомячки, ей богу, такую глупость сделать не могут без специального метода. При нашем с вами опыте (основываясь на сообщениях) такие вопросы вобще не должны возникать. Дак нет, спрашивали свои - стреляные дядьки. Ужас.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
14.09.2010, 18:12
|
#12
|
Элита
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений (для 3,923 пользователей)
|
Ответ: Самонаводящиеся ракеты
Когда я пользовался блицом, множество примеров, которые для него можно найти в интернете мне очень помогали. Не вижу в таких уроках ничего плохого.
Я уже насмотрелся на вашу тему про лок мыши
|
А?
|
(Offline)
|
|
14.09.2010, 18:15
|
#13
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Самонаводящиеся ракеты
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
14.09.2010, 18:18
|
#14
|
Элита
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений (для 3,923 пользователей)
|
Ответ: Самонаводящиеся ракеты
Хе, посмеялсо, вот там ламеры собрались, в той теме
|
(Offline)
|
|
14.09.2010, 18:20
|
#15
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Самонаводящиеся ракеты
Да, напутал. Реально ламеры. Показалось, что свои спрашивали.
Но напомню. Готовые компоненты не учат.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:14.
|