Пятница, 15 Ноября 2024, 09:05

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • seamanДата: Среда, 29 Июля 2015, 16:56 | Сообщение # 7201
    старожил
    Сейчас нет на сайте
    Цитата
    *Time.deltaTime

    Это глупость
    Цитата
    GameObject newBullet = (GameObject) Instantiate(bulletPrefab, transform.position + transform.forward,

    Возможно transform.forward это мало? Размер перса какой? Если пуля образуется внутри коллайдера перса, то полетит куда попало.
    ivan2009Дата: Среда, 29 Июля 2015, 18:11 | Сообщение # 7202
    частый гость
    Сейчас нет на сайте
    Цитата seaman ()
    Цитата
    *Time.deltaTime

    Это глупость

    Забыл убрать перед тем как выложить....я уже столько глупостей туда переписал, хорошо что никто не видел smile
    Цитата seaman ()
    Возможно transform.forward это мало? Размер перса какой? Если пуля образуется внутри коллайдера перса, то полетит куда попало.

    на скорую руку только что сделал так вот
    Код
    GameObject newBullet = (GameObject) Instantiate(bulletPrefab,transform.position + (Vector3.forward + Vector3.up) ,  Quaternion.identity);

    и действительно шар полетел как надо.... немного косячно когда целевой моб за спиной у персонажа(перс пока не поворачивается к цели) шар бьется об коллайдер перса и летит куда попало...
    Два дня я колдовал с этим выстрелом а оказалось что коллайдер беспощадная ты ****....убейте меня :))
    seaman спасибо за помощ
    Knife_KillДата: Среда, 29 Июля 2015, 18:52 | Сообщение # 7203
    частый гость
    Сейчас нет на сайте
    Есть вот такой вот код:

    Код

    using PigeonCoopToolkit.Navmesh2D;  
    using UnityEngine;  
    using System.Collections;  
    using System.Collections.Generic;  

    public class PathFollower : MonoBehaviour  
    {  

          public Transform pathingTarget;  
          private List<Vector2> path;  
         
       // LateUpdate is called once per frame  
       void Update () {  

           if(Input.GetKeyDown(KeyCode.E))  
           {  
               path = NavMesh2D.GetSmoothedPath(transform.position, pathingTarget.position);  
           }  

              if(path != null && path.Count != 0)  
              {  
                  transform.position = Vector2.MoveTowards(transform.position, path[0], 5*Time.deltaTime);  
                  if(Vector2.Distance(transform.position,path[0]) < 0.01f)  
                  {  
                      path.RemoveAt(0);  
                  }  
              }  
       }  
    }


    Работает он только тогда, когда персонаж войдет в специальную зону и нажмет "E", как сделать что бы скрипт работал сразу, когда персонаж войдет в эту зону? (скрипт висит на противнике)
    Если я убираю строчку " if(Input.GetKeyDown(KeyCode.E))" - то при входе в зону ничего не происходит...

    Мне тут подсказали вот что:


    Но как это можно сделать? А точней построить путь до таргета. Через Vector2.Distance? Если да, то как проверить вот это - точка предыдущего (при построении пути) таргета достигнута?
    ivan2009Дата: Среда, 29 Июля 2015, 20:43 | Сообщение # 7204
    частый гость
    Сейчас нет на сайте


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

    Добавлено (29 июля 2015, 20:43)
    ---------------------------------------------
    Цитата
    Работает он только тогда, когда персонаж войдет в специальную зону и нажмет "E"


    попробуй так, настрой ток под себя


    Таг на игрока не забудь кинуть и скрипт на зону действия вешай


    Сообщение отредактировал ivan2009 - Среда, 29 Июля 2015, 20:44
    БозингарДата: Среда, 29 Июля 2015, 20:50 | Сообщение # 7205
    почетный гость
    Сейчас нет на сайте
    Как повернуть объект в нужную сторону, используя метод Rigidbody2d.MoveRotation?

    #Хийвэл бүү ай, айвал бүү хий.
    ivan2009Дата: Среда, 29 Июля 2015, 21:28 | Сообщение # 7206
    частый гость
    Сейчас нет на сайте
    Цитата Бозингар ()
    Как повернуть объект в нужную сторону, используя метод Rigidbody2d.MoveRotation?

    LookAt(); попробуй
    БозингарДата: Среда, 29 Июля 2015, 22:09 | Сообщение # 7207
    почетный гость
    Сейчас нет на сайте
    Цитата ivan2009 ()
    LookAt()

    Нет, не годится. Задача такая, что игра в 2d, но изометрии - и игрок управляет персонажем. Клавишами, разумеется. Потому необходимо, что-бы по нажатию клавиш влево\вправо, персонаж поворачивался, но методом Rigidbody2d.MoveRotation. Проще было-бы использовать transform.rotation, но не подходит он тут.


    #Хийвэл бүү ай, айвал бүү хий.
    Knife_KillДата: Среда, 29 Июля 2015, 23:21 | Сообщение # 7208
    частый гость
    Сейчас нет на сайте
    ivan2009, Спасибо, немного продолбавшись с GetComponent все же более-мение сделал. работает через раз, но главное что работает, спасибо огромное!
    berilДата: Четверг, 30 Июля 2015, 00:11 | Сообщение # 7209
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата Бозингар ()
    Такой вопрос как или чем мне проверить потребление ресурсов при работе моего проекта...?

    Profiler , очень мощный инструмент для мониторинга




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    PakypcДата: Четверг, 30 Июля 2015, 11:31 | Сообщение # 7210
    был не раз
    Сейчас нет на сайте
    Здравствуйте.Такой вот вопрос... как мне скорректировать вектор направления что бы патрон всегда попадал в цель котороя постоянно в движении
    MANMANAДата: Четверг, 30 Июля 2015, 11:43 | Сообщение # 7211
    почти ветеран
    Сейчас нет на сайте
    Vector3.MoveTowards и Vector3.RotateTowards не подойдут?
    И попробуйте не кидаться патронами, а то напоминает Чарли Шина в "Горячих головах". Без обид wink
    А точно пуля должна быть видна или это стрела или снаряд большой? Может
    , просто через рейкаст?


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

    Последнее:

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

    Как запатентовать, защитить техническое решение, игру, идею
    PakypcДата: Четверг, 30 Июля 2015, 13:52 | Сообщение # 7212
    был не раз
    Сейчас нет на сайте
    Цитата MANMANA ()
    А точно пуля должна быть видна или это стрела или снаряд большой? Может
    , просто через рейкаст?

    Пока это просто шарик, да надо что бы было видно как летит...
    Цитата MANMANA ()
    И попробуйте не кидаться патронами, а то напоминает Чарли Шина в "Горячих головах". Без обид

    Это всмысле не через addForce выстрел делать или я что то не понял?
    Цитата MANMANA ()
    Vector3.MoveTowards и Vector3.RotateTowards не подойдут?

    Я второй месяц как с юнити знаком так что без понятия подойдут или нет...сейчас буду пробовать
    БозингарДата: Четверг, 30 Июля 2015, 14:25 | Сообщение # 7213
    почетный гость
    Сейчас нет на сайте
    Почему скрипт дает такую вот ошибку?


    Так понимаю, при запуске не может найти нужный скрипт (хотя он добавлен в инспекторе), и все функции, с ним повязанные - работают.


    #Хийвэл бүү ай, айвал бүү хий.
    berilДата: Четверг, 30 Июля 2015, 14:48 | Сообщение # 7214
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата Бозингар ()
    Почему скрипт дает такую вот ошибку?
    UnassignedReferenceException: The variable tar_2 of Interface has not been assigned.
    You probably need to assign the tar_2 variable of the Interface script in the inspector.
    UnityEngine.Transform.get_position () (at C:/BuildAgent/work/d63dfc6385190b60/artifacts/EditorGenerated/UnityEngineTransform.cs:28)
    Interface.OnGUI () (at Assets/Scripts/Interface.cs:29)

    Так понимаю, при запуске не может найти нужный скрипт (хотя он добавлен в инспекторе), и все функции, с ним повязанные - работают.

    Выложи пример кода




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    PakypcДата: Четверг, 30 Июля 2015, 16:06 | Сообщение # 7215
    был не раз
    Сейчас нет на сайте
    Может кто объяснить что за параметры нужно передавать в эти методы
    MoveTowards(vector current, vector target, float maxDistanceDelta)
    RotateTowards(vector current, vector target, float radianDeklta, float MagnitudeDelta)
    С таргетами понятно, а вот что за параметр в первом методе идет третим,
    во втором методе третий и четвнртый.
    Или есть у кого туториалы на русском по вот таким всяким методам...буду признателен за подсказки
    MANMANAДата: Четверг, 30 Июля 2015, 18:27 | Сообщение # 7216
    почти ветеран
    Сейчас нет на сайте
    Самонаводящаяся ракета пойдет? С описанием. Небольшим, правда..
    http://forum.boolean.name/showthread.php?t=13339
    Мне проще пример найти, чем переводить или искать русскую версию описания. Лентяй но чтото :-)


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

    Последнее:

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

    Как запатентовать, защитить техническое решение, игру, идею
    allodsДата: Четверг, 30 Июля 2015, 18:49 | Сообщение # 7217
    почти ветеран
    Сейчас нет на сайте
    Цитата Pakypc ()
    MoveTowards(vector current, vector target, float maxDistanceDelta)

    Что тут не понятно 1- это то что ты будешь двигать вращать, координаты которые будут меняться с данной функцией
    2- это цель, позиция или поворот в который будет преобразовываться наш 1
    3- это скорость с которой будет двигаться вращаться

    Добавлено (30 июля 2015, 18:49)
    ---------------------------------------------
    Может кто сказать как узнать угол под каким наш рейкаст попадает в поверхность коллайдер, к примеру нужно спавнить под нужным углом объект

    RichДата: Четверг, 30 Июля 2015, 19:00 | Сообщение # 7218
    был не раз
    Сейчас нет на сайте
    Какой скайбокс лучше использовать? И что делать со стыками между текстур? Когда все было сделано по примеру из документации появились артефакты. Как программно привязать скайбокс? Может тогда не будет этих навязчивых стыков?
    allodsДата: Четверг, 30 Июля 2015, 19:06 | Сообщение # 7219
    почти ветеран
    Сейчас нет на сайте
    пойти в настройки текстуры и поставить repeat. избавиться от артефактов убрать компрессию текстуры в тех же настройках
    БозингарДата: Четверг, 30 Июля 2015, 19:16 | Сообщение # 7220
    почетный гость
    Сейчас нет на сайте
    Цитата Rich ()
    И что делать со стыками между текстур?

    В стандартных тоже стыки имеются?

    Цитата beril ()
    Выложи пример кода


    Код индийский (или даже индейский), но простой. Показывает счет забитых голов:

    Код
    using UnityEngine;
    using System.Collections;

    public class Interface : MonoBehaviour {
       public Vector3 screenPos;
       public Vector3 screenPos_2;
       public Texture2D Gol_0;
       public Texture2D Gol_1;
       public Texture2D Gol_2;
       public Texture2D Gol_3;
       public Texture2D Gol_4;
       public Texture2D Gol_5;
       public Texture2D Gol_6;
       public Texture2D Gol_7;
       public Texture2D Gol_8;
       public Texture2D Gol_9;
       public Texture2D Gol_10;
       public Transform tar;
       public Transform tar_2;

       public Trig_1 gol;
       public Trig_2 gol_2;
       //public _2PC_Char CharHp;
         

       void OnGUI () {
        screenPos = Camera.main.WorldToScreenPoint(tar.position);
        screenPos_2 = Camera.main.WorldToScreenPoint(tar_2.position);

       //    if (gol.gol_count != null) {
        //    Debug.Log ("Null");
        //  }
        //if (gol_2.gol_count != null) {
        //    Debug.Log ("Null");
        //}

        if (gol.gol_count == 0) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_0);
        }

        if (gol.gol_count == 1) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_1);
        }
        if (gol.gol_count == 2) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_2);
        }
        if (gol.gol_count == 3) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_3);
        }
        if (gol.gol_count == 4) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_4);
        }
        if (gol.gol_count == 5) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_5);
        }
        if (gol.gol_count == 6) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_6);
        }
        if (gol.gol_count == 7) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_7);
        }
        if (gol.gol_count == 8) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_8);
        }
        if (gol.gol_count == 9) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_9);
        }
        if (gol.gol_count == 10) {
         GUI.Label(new Rect(screenPos.x,Screen.height- screenPos.y, 50, 50), Gol_10);
        }

        ///Vorot_2
        if (gol_2.gol_count == 0) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_0);
        }
          
        if (gol_2.gol_count == 1) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_1);
        }
        if (gol_2.gol_count == 2) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_2);
        }
        if (gol_2.gol_count == 3) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_3);
        }
        if (gol_2.gol_count == 4) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_4);
        }
        if (gol_2.gol_count == 5) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_5);
        }
        if (gol_2.gol_count == 6) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_6);
        }
        if (gol_2.gol_count == 7) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_7);
        }
        if (gol_2.gol_count == 8) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_8);
        }
        if (gol_2.gol_count == 9) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_9);
        }
        if (gol_2.gol_count == 10) {
         GUI.Label(new Rect(screenPos_2.x,Screen.height- screenPos_2.y, 50, 50), Gol_10);
        }
        }
    }


    Trig'и - скрипты, висящие на воротах и считающие, сколько раз в них влетел мяч.

    Оно-то, в общем-то, не мешает. Думаю, надо просто ==null прописать.


    #Хийвэл бүү ай, айвал бүү хий.

    Сообщение отредактировал Бозингар - Четверг, 30 Июля 2015, 19:27
    Поиск:

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