Пятница, 19 Апреля 2024, 21:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Маятниковое движение [РЕШЕНО]
Маятниковое движение [РЕШЕНО]
romeo98Дата: Четверг, 18 Декабря 2014, 17:58 | Сообщение # 1
участник
Сейчас нет на сайте
Здравствуйте!
Моя цель - создать похожий геймплей ССЫЛКА
Отличие в том, что качаться будет 2 объекта: арбалет и стрела. Тут начинаются проблемы... сначала я хотел сделать пустышку, присвоить дочерний объект со спрайтом арбалета и вращать пустышку (т.к. надо вращать у основания ружья, а не центр ружья). Так ружье начинает искажаться. Сделал по-другому:

Код

       public float sp = 20;

       private float timeToChangeDirect;
       private float timeToReset;
       private int dir = 1;

       void Start()    
       {
           timeToReset = 60 / sp;
           timeToChangeDirect = timeToReset;
       }

    void Update ()    
       {
           timeToReset = 60 / sp * 2;

           transform.RotateAround(transform.parent.position, Vector3.forward * dir, sp * Time.deltaTime);

           if (timeToChangeDirect > 0) timeToChangeDirect -= Time.deltaTime;
           else
           {
               timeToChangeDirect = timeToReset;
               dir *= -1;
                  
           }
    }


Вроде работает, но теперь мне нужно, чтобы стрела вращалась вместе с арбалетом. Если же снова попробовать сделать дочерним стрелу к арбалету, то получится фигня. Как быть? Писать похожий скрипт для стрелы? Или есть другой вариант?

Начал присваивать стреле насильно позицию родителя
Код

void Update()
       {
           transform.position = transform.parent.position;
       }


Стрела вроде качается правильно! но что делать, если я хочу конец стрелы подвинуть вперед? Чтобы она типо выпирала из арбалета.

Добавлено (18 декабря 2014, 17:58)
---------------------------------------------
Блин, сейчас сяду за комп и попробую использовать tranform.localposition
Сам задаю вопросы, сам же на них отвечаю fool


Flist - social platform
PuzzleSystem - Open-source Unity Asset
[2D] Mission: Defender


Сообщение отредактировал romeo98 - Пятница, 19 Декабря 2014, 00:47
LetsOffBrainsДата: Четверг, 18 Декабря 2014, 19:23 | Сообщение # 2
Project SoRDeLKa
Сейчас нет на сайте
this.x = parent.x + delta_range * math.cos(this.angle)
this.y = parent.y + delta_range * math.sin(this.angle)

что-то такое банальное не пойдет?



romeo98Дата: Пятница, 19 Декабря 2014, 00:45 | Сообщение # 3
участник
Сейчас нет на сайте
Цитата LetsOffBrains ()
this.x = parent.x + delta_range * math.cos(this.angle)
this.y = parent.y + delta_range * math.sin(this.angle)

Было бы хорошо с пояснениями. С математикой у меня хорошо, но я не пойму, тут вы пытаетесь присвоить X чему? Стреле или арбалету? Что вы берете за delta_range? Расстояние, на которое я хочу, чтобы стрела выпирала?

Cделал BUILD . Он работает, но если приглядеться, то видно, как стрела как бы уходит в сторону от предполагаемой траектории. Из-за чего это может быть?

Код самого маятникового движения я написал, а стрелу я отправляю вперед просто:
Код
transform.Translate(-spArrow * Vector3.up * Time.deltaTime);
Стрела - дочерний к объекту, на котором висит скрипт маятника. Сам маятник дочерен к пустышке. Пустышка играет роль точки, вокруг которой и должно все колебаться.

Как избавиться от этого эффекта ухода стрелы в сторону? Может есть альтернативные решения данной задаче, кроме предложения LetsOffBrains? Сейчас попробую с ним разобраться!

Добавлено (19 декабря 2014, 00:45)
---------------------------------------------
Нашел проблему. Самый-самый родитель, та точка (вокруг которой все вращается) была масштабирована не правильно. Из-за этого происходила деформация меша стрелы при повороте...


Flist - social platform
PuzzleSystem - Open-source Unity Asset
[2D] Mission: Defender


Сообщение отредактировал romeo98 - Пятница, 19 Декабря 2014, 00:45
MANMANAДата: Пятница, 19 Декабря 2014, 01:32 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
повесь скрипт на пустышку, затащи в скрипт стрелу и арбалет.
RotateAround как есть, а для стрелы через if(если не нажата кнопка) вращаем вокруг пустышки
else двигай стрелу Vector3.forward в локальных координатах
здесь же и коллизии стрелы с золотом обрабатывать будешь

или у тебя по скрипту на стреле, золоте и арбалете?


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Маятниковое движение [РЕШЕНО]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг