Среда, 13 Ноября 2024, 13:37

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • AntrixДата: Пятница, 19 Июня 2015, 17:51 | Сообщение # 7041
    почетный гость
    Сейчас нет на сайте
    Ребят, помогите со скриптами. В общем, есть два примитивных скрипта для события дверь/ключ. То есть, игрок подымает ключ, переменная в скрипте игрока меняется с false на true. Но само событие смены значения переменной исходит из другого скрипта. Соответственно, висят скрипты на разных объектах (ключ и игрок):

    Игрок:

    Код

    using UnityEngine;
    using System.Collections;

    public class PlayerKeys : MonoBehaviour {

       public bool cubeKey;

       // Use this for initialization
       void Start () {
        cubeKey = false;
        Debug.Log ("Player doesn't have a key!");
          
         
       }
         
       // Update is called once per frame
       void Update () {
         
       }
    }


    Ключ:

    Код

    using UnityEngine;
    using System.Collections;

    public class Test : MonoBehaviour {

       public PlayerKeys PK;

       // Use this for initialization
       void Start () {   

       }
         
       // Update is called once per frame
       void Update () {
           
       }

       void OnMouseDown() {
         
        Destroy (this.gameObject);
        PK.cubeKey = true;
        Debug.Log ("Player got a key!");
       }   

    }


    Вместо public PlayerKeys PK уже пробовал и gameObject.GetComponent<ScriptName>().cubeKey;. В любом случае в консоли ошибка
    Object reference not set to an instance of an object в строке
    Код
    PK.cubeKey = true;


    Уже извертелся на пупке. Повторюсь, что скрипты висят на отдельных объектах. Как изменить переменную с одного скрипта (объекта) на другом?


    Сообщение отредактировал Antrix - Пятница, 19 Июня 2015, 17:52
    pixeyeДата: Пятница, 19 Июня 2015, 18:05 | Сообщение # 7042
    Red Winter Software
    Сейчас нет на сайте
    Цитата Antrix ()
    Уже извертелся на пупке. Повторюсь, что скрипты висят на отдельных объектах. Как изменить переменную с одного скрипта (объекта) на другом?


    Для начала
    Destroy (this.gameObject);
    Должен идти последним в списке команд. Ты уничтожаешь объект и после его уничтожения в нем пытаешься что-то сделать.

    Потом тебе ясно дают сказать, что PK не существует. Либо ты его не назначил, либо из-за того что выше


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю



    Сообщение отредактировал pixeye - Пятница, 19 Июня 2015, 18:09
    MANMANAДата: Пятница, 19 Июня 2015, 18:06 | Сообщение # 7043
    почти ветеран
    Сейчас нет на сайте
    В Test-скрипте
    Цитата Antrix ()
     public PlayerKeys PK;

    Знамени на
    public GameObject thePlayer;//перетащи сюда игрока, на котором висит PlayerKeys, со сцены в инспекторе
    В void Start(){
    PlayerKeys playerScript = thePlayer.GetComponent<PlayerKeys>();
    }
    В Update()
    {
    ....
    playerScript.cubeKey=true;
    }


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

    Последнее:

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

    Как запатентовать, защитить техническое решение, игру, идею
    AntrixДата: Пятница, 19 Июня 2015, 18:13 | Сообщение # 7044
    почетный гость
    Сейчас нет на сайте
    MANMANA
    Вот так и сделал, все заработало! Спасибо преогромнейшее smile
    MANMANAДата: Пятница, 19 Июня 2015, 18:21 | Сообщение # 7045
    почти ветеран
    Сейчас нет на сайте
    Цитата MANMANA ()
    Вот так и сделал, все заработало! Спасибо преогромнейшее

    Про это замечание от Пиксиглаза ( :-). ) не забудь
    Цитата pixeye ()
    Destroy (this.gameObject);

    И ставь после операций над объектом, хотя объект и удаляется реально не сразу, а в конце отработки метода Update, а то потом багов нахватаешься.


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

    Последнее:

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

    Как запатентовать, защитить техническое решение, игру, идею
    AntrixДата: Вторник, 23 Июня 2015, 08:59 | Сообщение # 7046
    почетный гость
    Сейчас нет на сайте
    Еще вопрос... как заранее подготовленный объект (например стена с уже примененным материалом и скриптом к ней) изначально скрыть и убрать коллизию а при срабатывании триггера (другой объект) сделать видимым и с коллизией?

    Прошу прощения, разобрался smile


    Сообщение отредактировал Antrix - Вторник, 23 Июня 2015, 09:08
    seamanДата: Вторник, 23 Июня 2015, 22:14 | Сообщение # 7047
    старожил
    Сейчас нет на сайте
    Цитата pixeye ()
    Для начала
    Destroy (this.gameObject);
    Должен идти последним в списке команд. Ты уничтожаешь объект и после его уничтожения в нем пытаешься что-то сделать.

    Это неверно. Читаем мануал:
    Цитата
    Actual object destruction is always delayed until after the current Update loop, but will always be done before rendering.

    Действительное разрушение объекта всегда задерживается до окончания текущего цикла Апдейтов...
    Так что преспокойно можно вызвать Дестрой и после этого на нем что-то делать. Только до окончания текущего Апдейта. В всяком случае внутри одной функции все отлично должно работать.
    allodsДата: Пятница, 26 Июня 2015, 20:20 | Сообщение # 7048
    почти ветеран
    Сейчас нет на сайте
    ребят мне надо расставлять объекты
    ровнять их по 0,25 в playmode
    и не могу понять как
    к примеру мышка 0,21 мне нужно подровнять к 0,25 и так далее
    FlyOfFlyДата: Пятница, 26 Июня 2015, 23:43 | Сообщение # 7049
    заслуженный участник
    Сейчас нет на сайте
    Бесконечный connecting в окне unity, после переустановки его
    ~~~
    какой то баг был, перезапустил и всё гуд


    Сообщение отредактировал FlyOfFly - Пятница, 26 Июня 2015, 23:45
    ivan2009Дата: Суббота, 27 Июня 2015, 04:33 | Сообщение # 7050
    частый гость
    Сейчас нет на сайте
    Подскажите как заставить вращаться один объект по заданной орбите вокруг другого объекта?
    harmoxyneДата: Суббота, 27 Июня 2015, 07:50 | Сообщение # 7051
    заслуженный участник
    Сейчас нет на сайте
    ivan2009, раз
    два
    AntrixДата: Суббота, 27 Июня 2015, 14:19 | Сообщение # 7052
    почетный гость
    Сейчас нет на сайте
    Народ, такоая вот фиговина случилась (может какой либо хот кей нажал когда по карте "летал"):

    Такое чувство, что то ли угол обзора сменился либо я не знаю... на подлете к объектам/террейну и т.д. все начинает пропадать заранее а не в момент пересечения камеры с объектом. Revert Factory Settings делал уже.


    Сообщение отредактировал Antrix - Суббота, 27 Июня 2015, 14:20
    allodsДата: Суббота, 27 Июня 2015, 14:32 | Сообщение # 7053
    почти ветеран
    Сейчас нет на сайте
    убери перспективу с права в верху в окне редактора есть куб со стрелками клиник на куб

    Сообщение отредактировал allods - Суббота, 27 Июня 2015, 14:34
    AntrixДата: Суббота, 27 Июня 2015, 14:41 | Сообщение # 7054
    почетный гость
    Сейчас нет на сайте
    Цитата allods ()
    убери перспективу с права в верху в окне редактора есть куб со стрелками клиник на куб

    Не то... перспектива выключена.
    allodsДата: Суббота, 27 Июня 2015, 15:06 | Сообщение # 7055
    почти ветеран
    Сейчас нет на сайте
    колесико на мышке, наводи на землю или на какой объект и кликни на колесико, камера сфокусируется на объекте
    Странно то что у меня такое только тогда когда выключена перспектива (или включено )


    Сообщение отредактировал allods - Суббота, 27 Июня 2015, 15:07
    AntrixДата: Суббота, 27 Июня 2015, 17:16 | Сообщение # 7056
    почетный гость
    Сейчас нет на сайте
    Не знаю как, но оно само "починилось" :)
    Еще вопрос... есть FPSController, на котором висит скрипт FirstPersonController. Как мне этот скрипт отключить/включить из другого скрипта? Через GetComponent могу все контролировать, кроме вот этого скрипта.

    Разобрался сам. Что бы достать FirstPersonController, нужно было добавить using UnityStandardAssets.Characters.FirstPerson; о чем я совсем забыл. Ну а дальше все как обычно.


    Сообщение отредактировал Antrix - Суббота, 27 Июня 2015, 18:03
    RangerДата: Воскресенье, 28 Июня 2015, 08:48 | Сообщение # 7057
    почти ветеран
    Сейчас нет на сайте
    Цитата allods ()
    к примеру мышка 0,21 мне нужно подровнять к 0,25 и так далее

    {
    float position = 0.24f
    float adjustedPosition = Mathf.Round(position/.25f)*.25f;
    }


    AntrixДата: Воскресенье, 28 Июня 2015, 11:11 | Сообщение # 7058
    почетный гость
    Сейчас нет на сайте
    Еще раз всем доброго здравия smile Есть пара вопросов:

    1. Создал модель в blender, есть ли возможность затекстурить его в самой Unity? Если да, то каким образом сие действие провернуть? Только желательно в blender'е "разбить" модель по зонам, на которые будут накладываться текстуры. Может кто поделится мануалом, буду очень признателен.
    2. Есть две модели из Speedtree - трава и дерево. Обе одинаково экспортированы в Unity. Обе ставятся на terrain через стандартную функцию распределения растительности. Проблема - дерево отображается нормально а трава видна только на "метр" а дальше исчезает, как будто у неё дистанция прорисовки стоит очень низкая. Как исправить?

    Народ, чесслово, на форуме спрашиваю только в тех случаях, когда ничего не могу найти по своему вопросу, выручайте smile
    ЛевшаДата: Воскресенье, 28 Июня 2015, 13:19 | Сообщение # 7059
    почти ветеран
    Сейчас нет на сайте
    Цитата Antrix ()
    у неё дистанция прорисовки стоит очень низкая. Как исправить?




    X.cor.R (Prologue)
    AntrixДата: Воскресенье, 28 Июня 2015, 19:48 | Сообщение # 7060
    почетный гость
    Сейчас нет на сайте
    Левша
    Спасибо за подсказку, но не то... Взял для образца две модели травы (не нравится мне спрайтовая стандартная а денег покупать шейдеры из asset store нету sad ) и сравнил их в speedtree. В общем, модель MED и LOW отличаются парой параметров... но даже когда настроил LOW почти так же как и MED - она все равно имеет маленькую дистанцию прорисовки, в отличии от MED, которая рендерится метров на 500 (образно). Буду копать дальше sad


    Сообщение отредактировал Antrix - Воскресенье, 28 Июня 2015, 19:49
    Поиск:

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