Движение объекта относительно родительского

Программирование на Юнити.

Re: Движение объекта относительно родительского

Сообщение wild_r 20 май 2009, 15:48

Я не имелл ввиду, что решение в посте - плохое, я имел ввиду что тот код, который я написал - далек от моих представлений того, как должно быть.
Код: Выделить всё
function Update () {
    ...
    obj.transform.Translate(Vector3(0,0,speed*Time.deltaTime), сam.transform);
    ...
}


Хотя, может это решение и хорошее.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение Const_47 20 май 2009, 18:09

Если обжект паррентный, то все его движения будут относительно родителя.
Const_47
Герой Форума
 
Сообщения: 271
Зарегистрирован: 23 мар 2009, 19:24
Откуда: Украина. Львов\Новояворовск

Re: Движение объекта относительно родительского

Сообщение wild_r 20 май 2009, 18:17

Да, я знаю. Отвязываем от родителя, запоминая transform в нужный момент, чтобы направление полета мышкой не менять. Важен сам факт- запустить объект, чтобы он летел туда, куда смотрит мышъ.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение Serge 20 май 2009, 18:26

Вот скажите мне, что Вам мешает посмотреть пример, который я Вам сказал? Что Вам мешает взять от туда скрипт? Вот вариант этот скрипта, переделанный для моих целей.
Код: Выделить всё
using UnityEngine;
using System.Collections;

public class mCoconutThrow_sha : MonoBehaviour
{
    public Rigidbody myShellPrefab;
    public int ShellForce = 20;
    public AudioClip ShellClip;
    public Vector3 ShellRotate;
   
   // Update is called once per frame
   void Update ()
    {
        if (Input.GetButtonDown("Fire2"))
        {
            Rigidbody Coconut = (Rigidbody)Instantiate(myShellPrefab, transform.position, transform.rotation);
            Coconut.transform.Rotate(ShellRotate);
            Coconut.velocity = transform.TransformDirection(0, 0, ShellForce);
         Physics.IgnoreCollision(Coconut.collider, transform.root.collider);
            audio.PlayOneShot(ShellClip);           
      }
   }
}

Здесь с физикой, несложно переделать без физики. Летит туда, куда смотрит камера, все чего не хватает, смотрите в примере.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Движение объекта относительно родительского

Сообщение Neodrop 20 май 2009, 18:49

Привязывание/отвязывание это извращение не нужное.
Чего просто не придать импульс в координатах нужного объекта?
(Отредактировал) предыдущий оратор всё сказал правильно ;0)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Движение объекта относительно родительского

Сообщение wild_r 20 май 2009, 18:56

Хм, это был первоначальный вариант, но мне не нравиться немного каждая новая копия. Ну ладно...

Мне сказали что надо не шарик, а луч рисовать...
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение wild_r 02 июл 2009, 17:13

Такс, теперь другой вопрос - правильное убиение объектов:
Код: Выделить всё
   void OnCollisionEnter(Collision Info) {
      if (transform.gameObject.name!="bullet") 
         Destroy(transform.gameObject);
      }

Выглядит так?

К черту, пошел урок качать.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение wild_r 02 июл 2009, 17:29

Там Жаба, все вроде и так верно, но не работает.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение Serge 02 июл 2009, 17:57

Уточните вопрос, что вы хотите сделать и на каком объекте весит данный скрипт. Если он весит на "bullet" и уничтожение нужно при любой коллизии, то не вижу смысла проверять имя объекта. Процесс убиения зависит от ваших факторов и вариантов может быть много.
В примере кот. вы пошли качать объекты удаляются через опр. промежуток времени.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Движение объекта относительно родительского

Сообщение wild_r 02 июл 2009, 18:55

Код таков:

Код: Выделить всё
using UnityEngine;
using System.Collections;

public class shoot : MonoBehaviour {

   Transform Tar_pos;
   Transform Tar_rot;
   GameObject Obj;
   GameObject Bullet;
   int speed;
   
   void OnCollisionEnter(Collision Info) {
      if (transform.gameObject.name!="bullet") 
         Destroy(transform.gameObject);
      }
   
   // Use this for initialization
   void Start () {
      speed=1000;
      Tar_pos = GameObject.Find("wpn_launcher").transform;
      Tar_rot = GameObject.Find("Main Camera").transform;
      Obj = GameObject.Find("bullet");
      }
   
   // Update is called once per frame
   void FixedUpdate () {
      if (Input.GetButtonDown ("Fire1")) {
         if (transform.gameObject.name=="bullet")  {
            GameObject Bullet = (GameObject) Instantiate(Obj, Tar_pos.position, Tar_rot.rotation);
            Bullet.rigidbody.velocity = Tar_rot.TransformDirection(0, 0, speed);
         }
      }
   }
}


Все равно появляются по три и не мрут... Скрипт висит на буллетах и на каждой ее копии. Возможно стоит повесить скрипт отдельно. Сейчас попробую. И отдельно придеться вынести проверку столкновения.

З.Ы. Задача состоит в убиении при контакте с любой коллизией. Позже будут исключения - добавлю на оружие коробку.

З.Ы.Ы. Сделал отдельно, все равно по три спавняться, скрипт прикручен один раз. Тут может быть только одно - дело в fixed update.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение wild_r 02 июл 2009, 19:16

Да, вылетает три шарика из-за FixedUpdate. Теперь придется делать проверку на выход за определенной расстояние, ибо, судя по всему, шарики летят слишком быстр и просто проскакивают коллидер.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение Serge 02 июл 2009, 19:22

Слишком много действий. Вы так и не ответили, к чему прикреплен данный скрипт и что именно вы хотите получить?
Гадать мне не хочется, но все же попробую.
Если скрипт весит на камере или прицеле то коллизии никогда не произойдет и следовательно пуля не умрет. Вот это Tar_pos = GameObject.Find("wpn_launcher").transform тоже не понятно зачем? По нормальному скрипт должен быть прикреплен к объекту из которого вылетает пуля и направление брать из этого объекта т.е. Bullet = (GameObject) Instantiate(Obj, transform.position, transform.rotation).
Но это все мои догадки, вы так и не сказали что хотите сделать.
У вас слишком корявый код. И еще в примере кот. я привел используется Update () при использовании FixedUpdate() я получил неправильную работу программы. В чем проблема разбираться не стал.
Вариантов решения вашей задачи множество. Один из них приведен выше, пробуйте, экспериментируйте. Внимательней читайте документацию и конкретней задавайте вопросы.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Движение объекта относительно родительского

Сообщение gerasim 02 июл 2009, 19:29

Проект кидайте, или ево часть конкретную, незачем напальцах.
Неследите - и неследимы будете.
Аватара пользователя
gerasim
UNITрон
 
Сообщения: 166
Зарегистрирован: 17 апр 2009, 15:56
Откуда: Самара

Re: Движение объекта относительно родительского

Сообщение wild_r 02 июл 2009, 19:31

Я ответил.

Скрипт висел на пуле, а теперь висит отдельно. На пулю я сейчас повесил проверку выхода за границы сцены, а также функцию, вызываемую при столкновении. До этого все было в одном скрипте, и висело на пуле.

По поводу получения позиции - оружие сдвинуто, поэтому летать будет не туда, где будет прицел. Поэтому полет в сторону, куда смотрит камера. Позже сделаю полет и от камеры и скорость увеличу и уменьшу радиус шарика.

Про коллизии - я написал, не работает, ибо скорее всего, шарик считаеться экстраполяцией и не попадает именно на поверхность объектов в сцене.

З.Ы. Спасибо за ответы, т.к. я часто жутко туплю.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

Re: Движение объекта относительно родительского

Сообщение Serge 03 июл 2009, 03:44

Изначально скрипт был написан не правильно, собрано в кучу то, что нужно распределить по разным объектам. Коллизии работают, ищите ошибку. Вот еще полезная тема viewtopic.php?f=5&t=549
Думаю в вашем проекте множество ошибок и вы не конца понимаете, что делаете. Нужно либо досконально пересмотреть весь код и саму идею либо совместно с кем, либо привести все в порядок.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Пред.След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9