forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Уроки (http://forum.boolean.name/forumdisplay.php?f=145)
-   -   Самонаводящиеся ракеты (http://forum.boolean.name/showthread.php?t=13339)

pax 13.09.2010 21:52

Самонаводящиеся ракеты
 
Основываясь на примере ffinder'a я решил написать C# версию скрипта самонаводящейся ракеты:

PHP код:

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();
    }



.Squid 13.09.2010 21:57

Ответ: Самонаводящиеся ракеты
 
Vector3 movement = _thisTransform.forward * speed * Time.deltaTime;

pax 13.09.2010 21:59

Ответ: Самонаводящиеся ракеты
 
Цитата:

Сообщение от .Squid (Сообщение 161942)
Vector3 movement = _thisTransform.forward * speed * Time.deltaTime;

Когда кто-то прочитал твой код, значит время потрачено не зря :)

.Squid 13.09.2010 22:23

Ответ: Самонаводящиеся ракеты
 
Мне просто интересно было, летит ли ракета как-то эффектно - по дуге там какой, или по спирали, или просто плавно поворачиваясь на цель.

Данил 13.09.2010 23:26

Ответ: Самонаводящиеся ракеты
 
супер . побольше бы таких скриптов с такими комментариями. хоть язык бы изучил этот.

ffinder 14.09.2010 15:24

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

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

Вот такой вот баттхёрт.

pax 14.09.2010 15:32

Ответ: Самонаводящиеся ракеты
 
Цитата:

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

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

Вот такой вот баттхёрт.

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

PS: на самом деле я думал что нажал на "спасибо"...

impersonalis 14.09.2010 15:35

Ответ: Самонаводящиеся ракеты
 
Цитата:

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

это булка 20-10. такое бывает часто

pax 14.09.2010 15:50

Ответ: Самонаводящиеся ракеты
 
Если инициатор недовольства я - то я могу удалить эту тему. Мне не важны за нее благодарности. Я просто проделал работу, которую посчитал необходимой. Многие не знаю языка Boo. И как получилось - C#'a тоже не особо.

Данил 14.09.2010 16:11

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

и ненадо. откуда брать ТАКИЕ простые примеры - я не знаю, так почти ничего и не нашел, а с такого начинать - самое-то. изменил строчку - смотришь результат. и так далее.

Randomize 14.09.2010 17:45

Ответ: Самонаводящиеся ракеты
 
На мой взгляд эта ваша система компонентов ничему не учит.
От этих ваших компонентов, которые всегда будут использоваться бездумно происходит разжижение. Я уже насмотрелся на вашу тему про лок мыши. Ржач полный.
Как хомячки, ей богу, такую глупость сделать не могут без специального метода. При нашем с вами опыте (основываясь на сообщениях) такие вопросы вобще не должны возникать. Дак нет, спрашивали свои - стреляные дядьки. Ужас.

Nuprahtor 14.09.2010 18:12

Ответ: Самонаводящиеся ракеты
 
Когда я пользовался блицом, множество примеров, которые для него можно найти в интернете мне очень помогали. Не вижу в таких уроках ничего плохого.
Цитата:

Я уже насмотрелся на вашу тему про лок мыши
А?

Randomize 14.09.2010 18:15

Ответ: Самонаводящиеся ракеты
 
http://forum.boolean.name/showthread.php?t=13113

Nuprahtor 14.09.2010 18:18

Ответ: Самонаводящиеся ракеты
 
Хе, посмеялсо, вот там ламеры собрались, в той теме

Randomize 14.09.2010 18:20

Ответ: Самонаводящиеся ракеты
 
Да, напутал. Реально ламеры. Показалось, что свои спрашивали.
Но напомню. Готовые компоненты не учат.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot