Воскресенье, 29 Декабря 2024, 20:28

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • ЛевшаДата: Суббота, 09 Ноября 2013, 19:45 | Сообщение # 4881
    почти ветеран
    Сейчас нет на сайте
    Цитата Adom ()
    при падении большого объекта (например большой куб) то камера тряслась

    рандомной сменой позиции в заданном диапазоне.


    X.cor.R (Prologue)
    AdomДата: Суббота, 09 Ноября 2013, 21:31 | Сообщение # 4882
    Печенька!
    Сейчас нет на сайте
    Вот еще один вопрос как пользоваться public class?
    PocifikДата: Суббота, 09 Ноября 2013, 21:41 | Сообщение # 4883
    участник
    Сейчас нет на сайте
    Цитата Adom ()
    Вот еще один вопрос как пользоваться public class?

    Как вообще можно понять этот вопрос?
    Danteo122Дата: Суббота, 09 Ноября 2013, 22:10 | Сообщение # 4884
    постоянный участник
    Сейчас нет на сайте
    Цитата Adom ()
    Повторю свой вопрос.
    Как можно реализовать чтобы при падении большого объекта (например большой куб) то камера тряслась и было похоже на землетрясение.

    Создай Емпти, удочери камеру, добавь анимацию землятрясения, запиль скрипт и вуоля!
    NEBRДата: Суббота, 09 Ноября 2013, 22:41 | Сообщение # 4885
    почти ветеран
    Сейчас нет на сайте
    Danteo122, самое простое и красивое решение )))

    King Size #Gamiron12
    allodsДата: Воскресенье, 10 Ноября 2013, 04:39 | Сообщение # 4886
    почти ветеран
    Сейчас нет на сайте
    Цитата NEBR ()
    самое простое и красивое решение )))

    Только трястись будет всегда одинакого, рандом еще легче чем анимку делать
    NEBRДата: Воскресенье, 10 Ноября 2013, 11:10 | Сообщение # 4887
    почти ветеран
    Сейчас нет на сайте
    Цитата allods ()
    Только трястись будет всегда одинакого, рандом еще легче чем анимку делать

    но тут ведь мало написать
    Код
    Rnd = RandomRange(5);
    , нужно еще связать рандом с движением камеры. я не вижу тут быстрых решений, в то время как анимацию камеры я бы сделал за одну минуту. Если кто то захочет чтобы тряслась камера каждый раз по разному (хотя по мне тряска она и есть тряска), можно сделать две, три разных анимации тряски и рандомом выбирать какую из них проиграть.


    King Size #Gamiron12
    RangerДата: Воскресенье, 10 Ноября 2013, 13:37 | Сообщение # 4888
    почти ветеран
    Сейчас нет на сайте
    Цитата NEBR ()
    я не вижу тут быстрых решений

    В чем проблема
    1. создаешь отдельный вектор vector3 который отвечает за позицию камеры Vector3 MyPos;
    2. меняешь его, как нужно тебе по задаче.
    3. Когда трясет:
    Код
    Vector3 ShiftPos =  New Vector3 (Random.Range(-5f,5f),Random.Range(-5f,5f),Random.Range(-5f,5f));
    transform.position = MyPos + ShiftPos;

    4. соответственно, когда не трясет:
    Код
    transform.position = MyPos;


    Можешь еще нормировочные коэффициенты поставить
    Код
    Random.Range(-5f,5f)*K

    для совсем "гурманов"




    Сообщение отредактировал Ranger - Воскресенье, 10 Ноября 2013, 13:49
    NEBRДата: Воскресенье, 10 Ноября 2013, 13:54 | Сообщение # 4889
    почти ветеран
    Сейчас нет на сайте
    Ranger, ты для примера взял число 5. На практике нужно рассчитать это число, для этого нужно несколько раз запустить сцену, подбирать нужное значение. К тому же твой код приведет к тому что камера дернется один раз. А она должна трястить, это сколько подобных строчек нужно будет написать? Причем с разными значениями. Плюс еще для гурманов делать коэффициеты, которые также рассчитывать. Вот я и говорю что проще будет сделать анимацию за одну минуту.

    King Size #Gamiron12
    RangerДата: Воскресенье, 10 Ноября 2013, 14:05 | Сообщение # 4890
    почти ветеран
    Сейчас нет на сайте
    Цитата NEBR ()
    К тому же твой код приведет к тому что камера дернется один раз. А она должна трястить, это сколько подобных строчек нужно будет написать?

    А в update не судьба засунуть??
    только настрой таймер, а то она у тебя трястить будет со скоростью ФПС.
    Геймеры будут в эпилептических припадках валяться smile

    Цитата NEBR ()
    для этого нужно несколько раз запустить сцену, подбирать нужное значение.

    Один раз достаточно. Выведи K в паблик переменную и подбери "на лету".

    Цитата Ranger ()
    Вот я и говорю что проще будет сделать анимацию за одну минуту.

    Хозяин-барин..Чо.




    Сообщение отредактировал Ranger - Воскресенье, 10 Ноября 2013, 14:06
    NEBRДата: Воскресенье, 10 Ноября 2013, 14:49 | Сообщение # 4891
    почти ветеран
    Сейчас нет на сайте
    Цитата Ranger ()
    Хозяин-барин..Чо.
    да это вообще был не мой вопрос! Просто если бы я делал эту тряску, сделал бы ее как сказано выше!


    King Size #Gamiron12
    NEBRДата: Воскресенье, 10 Ноября 2013, 14:50 | Сообщение # 4892
    почти ветеран
    Сейчас нет на сайте
    Ranger, вот для прикола попробуй, собири этот скрипт в сцене, настрой его ) Поймешь какой это гемор )

    King Size #Gamiron12
    AdomДата: Воскресенье, 10 Ноября 2013, 14:52 | Сообщение # 4893
    Печенька!
    Сейчас нет на сайте
    Я тут как-то сделал.
    Проблема в том что Random.Range работает только один раз как сделать чтобы он работал бесконечно ?
    Код
    using UnityEngine;
    using System.Collections;

    public class Cube : MonoBehaviour {
    public Transform Player;
    public int a = 0;
    public int rot = 0;
    // Use this for initialization
    void Start () {
       
    }
       
    // Update is called once per frame
    void Update () {
    if(Input.GetKey(KeyCode.F)){   
    a = Random.Range(1,2);     
    }
    if(a == 1){   
    Player.localRotation = Quaternion.AngleAxis (rot, Vector3.right);
    }else{
    if(a == 2){    
    Player.localRotation = Quaternion.AngleAxis (rot, Vector3.left);   
    }
    }   
    }
    }
    NEBRДата: Воскресенье, 10 Ноября 2013, 15:03 | Сообщение # 4894
    почти ветеран
    Сейчас нет на сайте
    Adom, рандому не из чего выбирать. ты задал ему диапазон из одного значения a = Random.Range(1,2) - в этом случае всегда будет еденица. Если делаешь рандом из двух значений, нужно a = Random.Range(1,3); Тогда будет рандом, включающий еденицу и двойку.

    King Size #Gamiron12
    AdomДата: Воскресенье, 10 Ноября 2013, 15:14 | Сообщение # 4895
    Печенька!
    Сейчас нет на сайте
    А как запускать этот Random через нажатие кнопки например ?
    NEBRДата: Воскресенье, 10 Ноября 2013, 15:43 | Сообщение # 4896
    почти ветеран
    Сейчас нет на сайте
    Adom, запускаешь ты правильно

    King Size #Gamiron12
    allodsДата: Воскресенье, 10 Ноября 2013, 16:18 | Сообщение # 4897
    почти ветеран
    Сейчас нет на сайте
    чтоб дергалось не один раз а пока экран не треснет, то сделай новую переменную которая будет ровна true после нажатия кнопки, и пока она ровна true то твой а = рандому от 1-3. ну и дальше там таймер или еще что чтоб отключить твой true на false;
    AdomДата: Воскресенье, 10 Ноября 2013, 17:31 | Сообщение # 4898
    Печенька!
    Сейчас нет на сайте
    allods,Спасибо. =)
    Всем кто помог + в репу.:D
    allodsДата: Воскресенье, 10 Ноября 2013, 18:10 | Сообщение # 4899
    почти ветеран
    Сейчас нет на сайте
    Мой вопрос
    Сделал ядро как у пушки, летит от пушки до цели но не за ним а туда где была цель до вытсрела!
    rigidbody.AddRelativeForce (Vector3(fwd.x*4500,dist*3000,fwd.z*4500)*Time.deltaTime);
    летит с одной скорость 4500 а расстояние которое пролетает ядро меняется в зависимости от дистанции до цели.
    Вот все работает но первый выстрел первой пушки всегда отправляет ядро к чертовой бабке.
    Вот из за чего эта хрень? В старте пробывал rigidbody.AddRelativeForce 0,0,0); но не че не меняет
    RangerДата: Воскресенье, 10 Ноября 2013, 20:00 | Сообщение # 4900
    почти ветеран
    Сейчас нет на сайте
    allods, скорее всего чтото в неправильном порядке выполения скриптов
    Может быть также что в ядре при инициализации уже быда заложена скорость.
    Debug.log каждый выстрел. Смотри на rigidbody.velocity. и массу объекта.
    По необходимости ручками нули скорость regidbody.velocity = new vecTor3 (0,0,0);


    Поиск:

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