Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Уроки

Ответ
 
Опции темы
Старый 13.09.2010, 21:52   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 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.forwarddirection);

            if (
angle <= maxAngle)
            {
                
// угол меньше максимального, значит поворачиваем на цель
                
_thisTransform.forward direction.normalized;
            }
            else
            {
                
//сферическая интерполяция направления с использованием максимального угла поворота
                
_thisTransform.forward Vector3.Slerp(_thisTransform.forwarddirection.normalizedmaxAngle 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();
    }

__________________
Blitz3d to Unity Wiki

Последний раз редактировалось pax, 14.09.2010 в 02:50.
(Offline)
 
Ответить с цитированием
Эти 8 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
den (14.09.2010), Dream (14.09.2010), Fatalix3d (14.09.2010), h1dd3n (14.09.2010), Illidan (14.09.2010), Mr_F_ (14.09.2010), Nuprahtor (14.09.2010), Данил (14.09.2010)
Старый 13.09.2010, 21:57   #2
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Самонаводящиеся ракеты

Vector3 movement = _thisTransform.forward * speed * Time.deltaTime;
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (13.09.2010)
Старый 13.09.2010, 21:59   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Самонаводящиеся ракеты

Сообщение от .Squid Посмотреть сообщение
Vector3 movement = _thisTransform.forward * speed * Time.deltaTime;
Когда кто-то прочитал твой код, значит время потрачено не зря
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Andvrok (25.01.2014)
Старый 13.09.2010, 22:23   #4
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 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
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Самонаводящиеся ракеты

Короче, дорогие мои, я реально зол. Есть две причины.
1. Я дал скрипт - и тишина. Пакс переписал его на шарп - ему спасибо.

2. Если вся суть уроков в том, чтобы писать уже готовые компоненты и каждую строчку комментировать - я против. Это ничему не учит, кроме как ждать когда все сделают за тебя.

Вот такой вот баттхёрт.
(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 15:32   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Самонаводящиеся ракеты

Сообщение от ffinder Посмотреть сообщение
Короче, дорогие мои, я реально зол. Есть две причины.
1. Я дал скрипт - и тишина. Пакс переписал его на шарп - ему спасибо.

2. Если вся суть уроков в том, чтобы писать уже готовые компоненты и каждую строчку комментировать - я против. Это ничему не учит, кроме как ждать когда все сделают за тебя.

Вот такой вот баттхёрт.
Когда я пишу уроки, я стараюсь описать что делаю. Комментарии необходимы, чтобы понять как оно работает. В данном случае это не урок, а просто скрипт, если хотите, то перенесем это в другой подраздел и назовем его готовые скрипты а не уроки.

PS: на самом деле я думал что нажал на "спасибо"...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Crayzi (18.12.2010)
Старый 14.09.2010, 15:35   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Самонаводящиеся ракеты

Сообщение от ffinder Посмотреть сообщение
Короче, дорогие мои, я реально зол. Есть две причины.
1. Я дал скрипт - и тишина. Пакс переписал его на шарп - ему спасибо.
это булка 20-10. такое бывает часто
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Dzirt (14.09.2010), Randomize (14.09.2010)
Старый 14.09.2010, 15:50   #9
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Самонаводящиеся ракеты

Если инициатор недовольства я - то я могу удалить эту тему. Мне не важны за нее благодарности. Я просто проделал работу, которую посчитал необходимой. Многие не знаю языка Boo. И как получилось - C#'a тоже не особо.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Andvrok (25.01.2014), impersonalis (14.09.2010), Nuprahtor (14.09.2010)
Старый 14.09.2010, 16:11   #10
Данил
Модератор
 
Аватар для Данил
 
Регистрация: 11.07.2007
Сообщений: 2,910
Написано 686 полезных сообщений
(для 1,694 пользователей)
Ответ: Самонаводящиеся ракеты

да, не особо. я пока вообще не силен в юнайте. после блица не могу отойти.

и ненадо. откуда брать ТАКИЕ простые примеры - я не знаю, так почти ничего и не нашел, а с такого начинать - самое-то. изменил строчку - смотришь результат. и так далее.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nex (14.09.2010)
Старый 14.09.2010, 17:45   #11
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Самонаводящиеся ракеты

На мой взгляд эта ваша система компонентов ничему не учит.
От этих ваших компонентов, которые всегда будут использоваться бездумно происходит разжижение. Я уже насмотрелся на вашу тему про лок мыши. Ржач полный.
Как хомячки, ей богу, такую глупость сделать не могут без специального метода. При нашем с вами опыте (основываясь на сообщениях) такие вопросы вобще не должны возникать. Дак нет, спрашивали свои - стреляные дядьки. Ужас.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
Nuprahtor
Элита
 
Аватар для Nuprahtor
 
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений
(для 3,923 пользователей)
Ответ: Самонаводящиеся ракеты

Когда я пользовался блицом, множество примеров, которые для него можно найти в интернете мне очень помогали. Не вижу в таких уроках ничего плохого.
Я уже насмотрелся на вашу тему про лок мыши
А?
(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 18:15   #13
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Самонаводящиеся ракеты

http://forum.boolean.name/showthread.php?t=13113
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
Nuprahtor
Элита
 
Аватар для Nuprahtor
 
Регистрация: 26.07.2008
Сообщений: 1,972
Написано 1,095 полезных сообщений
(для 3,923 пользователей)
Ответ: Самонаводящиеся ракеты

Хе, посмеялсо, вот там ламеры собрались, в той теме
(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 18:20   #15
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Самонаводящиеся ракеты

Да, напутал. Реально ламеры. Показалось, что свои спрашивали.
Но напомню. Готовые компоненты не учат.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:08.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com