Пятница, 15 Ноября 2024, 16:30

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • AdomДата: Понедельник, 21 Апреля 2014, 17:21 | Сообщение # 5881
    Печенька!
    Сейчас нет на сайте
    beril, Ну ясень пень не бубном и целителем. А как именно ? Подтолкни
    berilДата: Понедельник, 21 Апреля 2014, 18:16 | Сообщение # 5882
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата Adom ()
    beril, Ну ясень пень не бубном и целителем. А как именно ? Подтолкни

    Ну какой вопрос, такой и ответ. smile
    Подробней бы код выложить или готовую сценку с проблемой




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    AdomДата: Понедельник, 21 Апреля 2014, 18:28 | Сообщение # 5883
    Печенька!
    Сейчас нет на сайте
    beril, Эх сценку выкладывать немного стыдно поэтому попробую объяснить даже скрин впихну )

    Добавлено (21.04.2014, 18:28)
    ---------------------------------------------
    В общем когда танк переворачиваться то башня смотрит допустим вправо а камера теперь не сзади него а где-слева. Как сделать что-бы камера в любом случае оставалась позади танка ?

    berilДата: Понедельник, 21 Апреля 2014, 19:40 | Сообщение # 5884
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    вот может пригодится камера
    Код

    using UnityEngine;
    using System.Collections;

    #region///=====================Камера следящая ха обьектом====
      // beril(11.02): добавить маштабирование
      //
      ///=================Описание======================
    /*Камера перемещается за target
      *  
      *  
      * */
    #endregion
    public class CameraFolowing : MonoBehaviour{
         [HideInInspector]
      public GameObject target; //цель за которой следуем
         public float xSpeed; //
      public float ySpeed; //
      public float yMinLimit; //минимальное значение
      public float yMaxLimit; //максимальное значение
       
         public float scrollSpeed; //скорость прокрутки
      public float zoomMin;  //зум минимальный
      public float zoomMax; //зум максимальный
       
       
      private float distance;
      private float distanceLerp;
      private Vector3 position;  
         private bool isActivated;
         private float x;
      private float y;
      private bool setupCamera;

        
       
         void Start () {
        
        
       //если цель не задана
       if(target == null)
       {
        target = GameObject.FindGameObjectWithTag("Player");
         
        if(target == null)
        {
         Debug.LogWarning("Don't found player tag please change player tag to Player");  
        }
       }
        
              
       //устанавливаем позицию
        Vector3 angles = transform.eulerAngles;
        x = angles.y;
        y = angles.x;
          
       CalDistance();
         }
       
       
       
         void LateUpdate () {
         
       ScrollMouse();
       RotateCamera();
       
      }
       
      //вращение камеры
      void RotateCamera()
      {
       if (Input.GetMouseButtonDown(1)){
       
        isActivated = true;
       
       }  
       
        
       if (Input.GetMouseButtonUp(1))
       {
        isActivated = false;
       }  
       
       
       
          if (target && isActivated) {  
         
         y -= Input.GetAxis("Mouse Y") * ySpeed;

         x += Input.GetAxis("Mouse X") * xSpeed;

               
        
            y = ClampAngle(y, yMinLimit, yMaxLimit);
        
        
             Quaternion rotation = Quaternion.Euler(y, x, 0);
         
        Vector3 calPos = new Vector3(0, 0, -distanceLerp);

               position = rotation * calPos + target.transform.position;
        
              transform.rotation = rotation;
        
              transform.position = position;
       
       
       } else
       {
        Quaternion rotation = Quaternion.Euler(y, x, 0);
         
        Vector3 calPos = new Vector3(0, 0, -distanceLerp);

               position = rotation * calPos + target.transform.position;
        
              transform.rotation = rotation;
        
              transform.position = position;
       }
      }
       
       //выцесляем направление
       void CalDistance()
      {
       distance = zoomMax;
       distanceLerp = distance;
       Quaternion rotation = Quaternion.Euler(y, x, 0);  
       Vector3 calPos = new Vector3(0, 0, -distanceLerp);
          position = rotation * calPos + target.transform.position;
          transform.rotation = rotation;
          transform.position = position;
      }
       
       
      void ScrollMouse()
      {
       distanceLerp = Mathf.Lerp(distanceLerp,distance,Time.deltaTime * 5);
       if (Input.GetAxis("Mouse ScrollWheel") != 0)  
        {  
         // get the distance between camera and target
       
         distance = Vector3.Distance (transform.position , target.transform.position);  
       
         distance = ScrollLimit(distance - Input.GetAxis("Mouse ScrollWheel")*scrollSpeed, zoomMin, zoomMax);
       
        }
      }
       
        
      float ScrollLimit(float dist, float min, float max)
         {
             if (dist < min)
       
                 dist= min;
       
             if (dist > max)
       
                 dist= max;  
       
       return dist;
         }
       
       
       
      float ClampAngle(float angle,float min,float max)
      {
       if(angle < -360)
        angle += 360;
       if(angle > 360)
        angle -= 360;
       return Mathf.Clamp(angle,min,max);
      }
    }




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    AdomДата: Понедельник, 21 Апреля 2014, 20:39 | Сообщение # 5885
    Печенька!
    Сейчас нет на сайте
    Это что за ошибка то такая ? (Не связанно с предыдущиими темами).
    Error building Player: Couldn't build player because of unsupported data on target platform.
    и тд
    berilДата: Понедельник, 21 Апреля 2014, 20:41 | Сообщение # 5886
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    динамические шрифты ?



    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)


    Сообщение отредактировал beril - Понедельник, 21 Апреля 2014, 20:42
    AdomДата: Понедельник, 21 Апреля 2014, 21:05 | Сообщение # 5887
    Печенька!
    Сейчас нет на сайте
    Эмм?
    ATC compressed textures are not supported when publishing to Standalone
    Assets/Icon/play.png
    Included from scene:
    UnityEditor.HostView:OnGUI()

    Building - Failed to write file: sharedassets0.assets
    UnityEditor.HostView:OnGUI()

    Вот еще

    Добавлено (21.04.2014, 21:05)
    ---------------------------------------------
    ATC compressed textures are not supported when publishing to Standalone
    Assets/Standard Assets/Image Effects (Pro Only)/_Sources/Textures/VignetteMask.png
    Included from scene:
    UnityEditor.HostView:OnGUI()

    lentinantДата: Понедельник, 21 Апреля 2014, 23:43 | Сообщение # 5888
    ленивый программист
    Сейчас нет на сайте
    Цитата Adom ()
    ATC compressed textures are not supported when publishing to Standalone

    ATC сжатие текстур поддерживается только на Андроиде, ты же пытаешься впихнуть его в ПК версию.


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    AdomДата: Вторник, 22 Апреля 2014, 15:29 | Сообщение # 5889
    Печенька!
    Сейчас нет на сайте
    Как лечить ?

    Добавлено (22.04.2014, 14:52)
    ---------------------------------------------
    Все. Вылечил. Спасибо помог)

    Добавлено (22.04.2014, 15:29)
    ---------------------------------------------
    А можно сделать обновления игры как в WOT ? Т.Е что-бы обновлялось каждый раз когда выходит новая версия причем нужно будет учитывать какая версия сейчас установлена. Как это можно сделать ?

    Storm54Дата: Четверг, 24 Апреля 2014, 02:45 | Сообщение # 5890
    постоянный участник
    Сейчас нет на сайте
    Цитата
    А можно сделать обновления игры как в WOT ? Т.Е что-бы обновлялось каждый раз когда выходит новая версия причем нужно будет учитывать какая версия сейчас установлена. Как это можно сделать ?

    Можно. Пишешь лаунчер, который будет запускаться первым и при необходимости обновлять игру, а затем уже саму эту игру и запускать. Хотя, конечно, такой ответ тебя не устроит, т.к. тебе нужен пример в пару строк кода. Готового варианта нет. Пишешь сам все ручками.

    Для начала разбиваешь всю игру на ассет бандлы, в которых будет храниться вся информация. Как именно будет игра разбита - тебе решать. Лично у меня отдельные бандлы под следующие категории: Модели, текстуры, скрипты, локации. Бандлы эти так же собираешь вручную, благо документации в интернете полно, да и в юнити уже есть классы, облегчающие этот процесс.
    При запуске лаунчер должен запросить список всех необходимых файлов с сервера и их MD5, после чего пробежаться по всем файлам, указанным в списке и в случае отсутствия файла или несоответствия его контрольной суммы, скачать новый файл с сервера, заменив существующий.

    На самом деле можно игру и не разбивать на ассет бандлы, но тогда в большинстве случаев придется обновлять практически весь клиент даже при самом незначительном обновлении.
    AdomДата: Четверг, 24 Апреля 2014, 05:47 | Сообщение # 5891
    Печенька!
    Сейчас нет на сайте
    Storm54, Спасибо. Такого ответа я и ждал )

    Добавлено (24.04.2014, 05:44)
    ---------------------------------------------
    Пойду гуглить тогда )

    Добавлено (24.04.2014, 05:47)
    ---------------------------------------------
    И вот еще вопрос. Где хранить файлы обновлений ?

    Fr0sTДата: Четверг, 24 Апреля 2014, 15:59 | Сообщение # 5892
    постоянный участник
    Сейчас нет на сайте
    Есть объект,к нему прикреплена моделька(как чайлд)Этой модельки я передаю координату поворота по Y,поворачивает,но без учета поворота родительского объекта.Дело в том что родительский объект крутится и мне надо поворачивать модельку которая к нему прикреплена относительно его же.Transform.localRotation не помогает.А,ну и координату я беру так
    quaternion q = quaternion.lookRotation(moveDirektion);
    transform.rotation = quaternion.Euler(transform.eulerAngles.x,q.eulerAngles.y,transform.eulerAngles.z);
    UPD: Разобрался smile






    Сообщение отредактировал Fr0sT - Четверг, 24 Апреля 2014, 23:09
    AdomДата: Воскресенье, 27 Апреля 2014, 10:38 | Сообщение # 5893
    Печенька!
    Сейчас нет на сайте
    Есть скрипт он служит для поднимания ствола танка. Как ограничить угол подъема ?
    Код
    using UnityEngine;
    using System.Collections;

    public class Turret : MonoBehaviour {
    public Transform Tur;
    public float rotationVel = 50; //Rotation Velocity
    public float yRotation=5;
    public float minimumX = -360F;
    public float maximumX = 360F;
    public float minimumY = -60F;
    public float maximumY = 60F;  
    void  Update (){
    if(networkView.isMine){
    //Rotate the turret to the right
    rotationVel += Input.GetAxis("Mouse X");
    transform.Rotate(Vector3.up*rotationVel*5);
    //Rotate the turret to the left
    rotationVel -= Input.GetAxis("Mouse X");    
    transform.Rotate(-Vector3.up*rotationVel*5);
    //    
    rotationVel += Input.GetAxis("Mouse Y");
    Tur.Rotate(Vector3.right*rotationVel*5);
    //    
    rotationVel -= Input.GetAxis("Mouse Y");  
    Tur.Rotate(-Vector3.right*rotationVel*5);    
    }
    }
    }
    lentinantДата: Воскресенье, 27 Апреля 2014, 16:08 | Сообщение # 5894
    ленивый программист
    Сейчас нет на сайте
    Adom, соответственно до твоего кода, можно получить угол наклона с трансформа (GetEulers, вроде бы, точно не помню), пробить его через Mathf.Clamp, и вернуть обратно в transform.

    Когда-то тут будут ссылки на крутые проекты. Или нет.

    Сообщение отредактировал lentinant - Воскресенье, 27 Апреля 2014, 16:09
    AdomДата: Воскресенье, 27 Апреля 2014, 18:46 | Сообщение # 5895
    Печенька!
    Сейчас нет на сайте
    А вот теперь еще вопрос. Он не относится к предыдущему. Как сделать систему обновлений ? Т.е что-бы старая версия игры обновлялась до новой ?
    true_abrakadabraДата: Воскресенье, 27 Апреля 2014, 19:04 | Сообщение # 5896
    Unity3d - ван лав
    Сейчас нет на сайте
    Adom, пол минуты гугления

    Ниндзя
    AdomДата: Воскресенье, 27 Апреля 2014, 19:10 | Сообщение # 5897
    Печенька!
    Сейчас нет на сайте
    ПОЛ БЛИН МИНУТЫ !?
    Я ИСКАЛ ЭТО НЕДЕЛЮ !!
    Storm54Дата: Воскресенье, 27 Апреля 2014, 20:10 | Сообщение # 5898
    постоянный участник
    Сейчас нет на сайте
    Проще самому написать. На готовых скриптах ты далеко не уедешь.
    AdomДата: Понедельник, 28 Апреля 2014, 11:51 | Сообщение # 5899
    Печенька!
    Сейчас нет на сайте
    Storm54,Знаю. Я уже начал писать )
    owerДата: Понедельник, 28 Апреля 2014, 13:38 | Сообщение # 5900
    был не раз
    Сейчас нет на сайте
    Помогите пожалуйста.
    Подскажите как реализовать Скрипт который при клике мышкой на объект, телепортировал персонажа в конкретную точку?
    Заранее Спасибо.
    Поиск:

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