Среда, 24 Апреля 2024, 18:35

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум игроделов » Записи участника » ivan2009 [41]
Результаты поиска
ivan2009Дата: Суббота, 12 Марта 2016, 18:19 | Сообщение # 1 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Доброго времени суток. Такой вопрос. Есть объект содержащий 6 дочерних объектов и есть объект - триггер.
Суть задачи в том что после остановки объекта-родителя, должно менять значение у переменных дочерних объектов.
Сразу пишу на объекте- триггере isTrigger активна, объекты заходят в границы коллайдера объекта-триггера.
Ниже выложу код...

Код
using UnityEngine;
using System.Collections;

//скрит отвечает за считываение данных с верхней стороны куба, при полной остановке куба.
public class DiceTrigger : MonoBehaviour {
    //переменные для таймера, который отсчитывает  время
    //для проверки остановки кубов.
    private float timer = 1f;
    private const float timerReload = 0.5f;
    //переменные для проверки остановки кубов.
    private float posX, posY, posX1, posY1, pos_01X, pos_01Y, pos_01X1, pos_01Y1;
    private int count = 0;
    private GameObject dice, dice_01;

    //метод работает при вхождении  в граници коллайдера объектов.
  void OnTriggerStay(Collider enteres){
  //вспомогательные переменные.
  bool diceIStop = false;
  bool dice_01IsStop = false;

  if (enteres != null) {
   if (enteres.gameObject.CompareTag ("Dice")) {
    timer -= Time.deltaTime;
    if (count < (int)1) {
      dice = GameObject.Find ("Dice");
      dice_01 = GameObject.Find ("Dice_01");
     count = 1;
    }
    if (timer < 0) {
     posX = dice.transform.position.x;
     posY = dice.transform.position.y;
     pos_01X = dice_01.transform.position.x;
     pos_01Y = dice_01.transform.position.y;
     if (posX == posX1 && posY == posY1) {
      diceIStop = true;
     }else {
      posX1 = posX;
      posY1 = posY;
     }
     if (pos_01X == pos_01X1 && pos_01Y == pos_01Y1) {
      dice_01IsStop = true;
     }else {
      pos_01X1 = pos_01X;
      pos_01Y1 = pos_01Y;
     }

     timer = timerReload;
    }
   }
   //если кубы остановились.
   if (diceIStop && dice_01IsStop) {
    //ищем по тагу  дочерние объекты кубов.
    if (enteres.gameObject.CompareTag ("DiceSide")) {
     enteres.gameObject.GetComponent<DiceSide> ().setSideTrigger (true);
    }
   }
  }
    }
}


в последний оператор if (где идет поиск по тагу дочерних елементов) не заходит.
ivan2009Дата: Четверг, 21 Января 2016, 22:02 | Сообщение # 2 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.Подкиньте кто нибудь пожалуйста каких то туториалов(на русском) по работе с инспектором через скрипты.Буду очень признателен за подсказки.
ivan2009Дата: Четверг, 07 Января 2016, 17:07 | Сообщение # 3 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата beril ()
Ты ведь не делаешь так?

Обычно присваивал уже существующие объекты
как то так :
Код

class MyClass{
public string s;
}

class MyClass1{
string s1 = MyClass.s;
}

ну или что то подобное...потому и на тупил...

Тут вот такой вопрос.Как мне при помощи метода Vector.Lerp переместить объект по каждой позиции объектов находящихся в коллекции.
Сколько объектов в коллекции определяется динамически. И текущая позиция перемещаемого объекта будет постоянно изменятся и определятся динамически.
пробовал сделать что то такое.
Код
//метод для плавного перемещения фишки по поинтам.
    private void myLerp(GameObject chip, List<GameObject> allPoints){
  //получаем индекс последней позиции фишки.
  int lastIndex = chip.GetComponent<ChipButton> ().currentPosIndex;
  //колекция для  поинтов в промежутке между последней позицией фишки и будущей.
  List<GameObject> activeRangePoint = new List<GameObject> ();
  //вспомогательная переменная.
  int countPoint = allPoints.IndexOf (gameObject) - lastIndex;
  //заполняем коллекцию поинтами.
  activeRangePoint.AddRange (allPoints.GetRange (lastIndex, countPoint));
  //перемещаем фишку по каждому поинту.
  foreach (GameObject point in activeRangePoint) {
   chip.transform.position = Vector3.Lerp(chip.transform.position, point.transform.position, Time.deltaTime* rools.getChipSpeed());
  }

    }


но тут получается косяк в том что в цикле foreach не дожидаясь окончательного перемещения объекта на указанную позицию происходит переход к следующему элементу коллекции...
и получается так что весь цикл отрабатывает а перемещаемый объект не становится даже на первую позицию...
ivan2009Дата: Вторник, 05 Января 2016, 18:57 | Сообщение # 4 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Доброго времени суток...Тут такая ситуация... в методе динамически объявлял обобщенную коллекцию,после определенного события добавлял в эту коллекцию объект.
И вот тогда у меня вылетала ошибка NullReferenceException: Object reference not set to an instance of an object - это как я понимаю не был указан параметр в методе List<>.Add();
Решить проблему у меня получилось...но причину я как то не уловил....собственно чего и начал писать тут, объясните мне неучу почему этот вариант коллекции выдавал ошибку -
List<GameObject> activeAllPoints = null;
а вот этот не выдавал и все у меня заработало - List<GameObject> activeAllPoints = new List<gameObject>();
Буду очень благодарен если объясните в чем разница между этими вариантами...

ниже кусок скрипта где все это происходило.
Код
if (GameObject.FindGameObjectWithTag (ChipTag)) {
    //если значения кубов больше нуля.
    if (dice1 > (int)0 || dice2 > (int)0) {
     //собираем все активные фишки в коллекцию.
     List<GameObject> allChip = GameObject.FindGameObjectsWithTag (ChipTag).ToList ();
     //вызываем метод возвращающий фишку с наибольшим приоритетом.
     activeChip = ai.getMaxPriorityChip (allChip);
     //вызываем метод определения активных поинтов, в зависимости от значений кубов.
     ai.Move (activeChip.GetComponent<ChipButton> ().currentPosIndex, pointsCol, activeChip,
           GameObject.FindGameObjectsWithTag (ChipTag));
     List<GameObject> activeAllPoints = new List<GameObject>();
    
     //Debug.Log ("Значение куба1 >>>> " + dice1 + "  Зачение куба2 >>>> " + dice2);
     foreach (GameObject point in pointsCol) {
      if (point.transform.FindChild ("Spotlight").GetComponent<Light> ().enabled) {
       //собираем все активные поинты в коллекцию.
       activeAllPoints.Add(point);[b] Вот тут  я через дэбаг режим смотрел  у меня вылетало с первым вариантом обьявления коллекции[/b]
       //Debug.Log ("Поинт  с мндексом " + pointsCol.IndexOf (point) + " активен!!!");
      }
     }
     //вызываем метод возвращающий поинт с максимальным приоритетом.
     GameObject activePoint = ai.checkPriorityPoint (activeAllPoints, pointsCol);
     activePoint.GetComponent<PointButton1> ().moveAIChip (activeChip, pointsCol);
    } else {
     endPlay ();
    }
   }


что то я посидел подумал....в первом варианте я создавал просто ссылку на коллекцию но не саму коллекцию, а во втором варианте уже создавал саму коллекцию....Правильно ли я понял?)


Сообщение отредактировал ivan2009 - Вторник, 05 Января 2016, 19:43
ivan2009Дата: Четверг, 17 Декабря 2015, 22:21 | Сообщение # 5 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
спасибо за инфу!
ivan2009Дата: Среда, 16 Декабря 2015, 21:01 | Сообщение # 6 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Такой вопрос есть ли где то туториал по новой системе работы с сетями(5.1) на русском...но офф сайте все на англ...буду признателен за помощь
ivan2009Дата: Вторник, 06 Октября 2015, 20:37 | Сообщение # 7 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте, не могу отсортировать коллекцию, делаю все как по книжке(добавляю интерфейс IComparable<T>, и реализую метод CompareTo), компилятор не ругается но во время выполнения выдает ошибку.
Скрины, и код ниже

Код
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System;

public class ChipButton : MoveBehaviour, IComparable<GameObject> {
   private List<GameObject> allPoints;
   private bool isActiveChip = false;
   private int currentPosIndex , dice, dice1;
   private MyParseInt1 myParse;
   private GameObject thisGameObject;

   public int CompareTo(GameObject ob){
    return gameObject.name.CompareTo (ob.name);
   }

   void Start(){
    allPoints = GameObject.FindGameObjectsWithTag ("Point").ToList();
    myParse = GameObject.Find ("NotActiveChipsFont").GetComponent<MyParseInt1> ();
    thisGameObject = this.gameObject;
    allPoints.Sort ();
    Debug.Log (allPoints.IndexOf (GameObject.Find ("A1")));

   }

     
   public void Test(){

    Move (currentPosIndex, allPoints, thisGameObject);
   }
}




Я так понял что я не там реализую интерфейс...Буду признателен за помощь


Сообщение отредактировал ivan2009 - Вторник, 06 Октября 2015, 20:37
ivan2009Дата: Воскресенье, 27 Сентября 2015, 10:37 | Сообщение # 8 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата SmallNibbler ()
Вы подключили библиотеку UI? Если нет, то вот так:

Да подключил.
ivan2009Дата: Суббота, 26 Сентября 2015, 19:38 | Сообщение # 9 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.Такой вопрос как обратится к компоненту Image кнопки(UI) через код(C#)?
Хочу динамически включать и выключать рендеринг кнопки, пишу так
Код
gameObject.GetComponent<Image>().enabled = false; - не работает
gameObject.GetComponent<Button>().image.enabled = false;  - тоже не работает

скрипт висит на кнопке.
ivan2009Дата: Понедельник, 24 Августа 2015, 12:13 | Сообщение # 10 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
спасибо, совсем вылетело из головы..:)
Добрый день. Тут такое дело, динамически создаю text который идет по такой ветке canvas->inventory->slot->text при создании текст где то далеко вверху и не активен(как будто он вне канваса)...В голову не лезет что не так... скрипт и скрин ниже






буду признателен за помощь


Сообщение отредактировал ivan2009 - Понедельник, 24 Августа 2015, 13:59
ivan2009Дата: Понедельник, 24 Августа 2015, 04:53 | Сообщение # 11 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.Такое дело... при настройках rectTransform Image(UI) не могу передвигать Pivot(круг в центре картинки), он у меня полупрозрачный, когда зажимаю лкм на нем и двигаю двигается вся картинка....то ли пора мне спать идти или его где то надо включить, потому что похоже что он не активный у меня..
ivan2009Дата: Пятница, 14 Августа 2015, 19:58 | Сообщение # 12 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.Тут такое дело...Есть текст который я сделал дочерним элементом персонажа, и висит он над его головой, только вот он вертится вместе с персонажем,мне надо что бы текст перемещался вместе с ним но не вертелся...
скрипт ниже

Буду признателен за подсказки.
ivan2009Дата: Среда, 12 Августа 2015, 20:13 | Сообщение # 13 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата beril ()
Глянь это

Полазил посмотрел....ток чего то не понял...там у него Notice наследуется от Text, что за текст...это он сам писал скрипт и наследовался от него или же это стандартный класс в библиотеках юнити.
Сейчас попробую сделать коррутину такую же...
Просто я брал коррутину с документации по движку....
ivan2009Дата: Среда, 12 Августа 2015, 18:26 | Сообщение # 14 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.Есть пару вопросов.
Ситуация такая персонаж вбегает в определенную зону, когда он в зоне то становится активным UI элемент (текст).На текст хочу сделать коррутину что бы менялась прозрачность текста.И вот тут бока...
Скрипты ниже

активация UI элемента


попытка сделать коррутину на мерцание надписи


в общем при динамически создаваемом рендерере когда персонаж в зоне активации UI элемента, юнити ругается мол рендерера то нету у обьекта...
сам же я не знаю какой рендерер надо лепить на UI элемент, там есть canvasrenderer но у него не доступна rend.material.color;
И ещё такая вот штука, по умолчанию UI элемент не активен и как бы я не писал поиск его(в первом скрипте), искал по имени,тэгу, через родителя пробовал... всегда при входе в зону активации юнити ругалось что ссылка на обьект пустая, делаю UI элемент активным по умолчанию...вся работает нормально....решилось это только после того как я ручками перетащил элемент в графу GameObject text.
Мне вот интересно почему так.
Буду очень признателен за помощь
ivan2009Дата: Пятница, 07 Августа 2015, 20:16 | Сообщение # 15 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте. Очень хотелось бы узнать про взаимодействие с UI елементами через свои скрипты, интересует как обращаться в своих скриптах к конкретному объекту UI.
К примеру у меня есть skrollbar у которого есть переменные Size, Value.... Подскажите может у кого есть туториалы(на русском) на данную тему или какой то полезный материал.
Буду благодарен.
ivan2009Дата: Четверг, 06 Августа 2015, 13:00 | Сообщение # 16 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата allods ()
gun = thisTransform.FindChild("Gun");
dulo = gun.FindChild("Dulo");

уже допер сам...не успел удалить что бы мой позор никто не видел...но Спасибо за подсказки smile


Сообщение отредактировал ivan2009 - Четверг, 06 Августа 2015, 13:05
ivan2009Дата: Среда, 05 Августа 2015, 16:52 | Сообщение # 17 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата
Ты вертишь только модель которая в объекте ? так верти сам объект. Или засунь пустой объект в модель и спавни на месте этого пустого объекта

я засунул пустой обьект, просто и элегантно..:))) Спасибо!


Сообщение отредактировал ivan2009 - Среда, 05 Августа 2015, 17:05
ivan2009Дата: Среда, 05 Августа 2015, 14:52 | Сообщение # 18 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Здравствуйте.Тут такое дело.Есть персонаж который бегает,стреляет.При вращении модели перса стрелки осей координат остаются на месте.Из этого получается что при спавне патрона нет теряется смысл спавнить патрон указывая позишн перса + vector3.forward, up,one всё в таком духе, персонаж вертится в игре лицом к цели а его оси нет и получается так что патрон спавнится то со спины то с боку...вобщем борода...Можно ли заставить оси вращатся вместе с персом или как то взять начальную точку координат с вектора направлния(персонаж-цель) и там спавнить патрон.
И ещё такой вот вопросик...у меня на мобе оси координат расположены у ног и патрон приближаясь к нему опускается к ногам...как это поправить?
ivan2009Дата: Пятница, 31 Июля 2015, 20:34 | Сообщение # 19 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата allods ()
ошибся наверное, в место луча просто вектор

что то я вообще запутался...ты на мой пост ответил или перепутал что то?)
ivan2009Дата: Пятница, 31 Июля 2015, 19:41 | Сообщение # 20 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата allods ()
Цитата Pakypc ()
Vector3.Angle(normal,ray);

что то я так и не понял...зачем мне кидать луч...если у меня есть вектора направления...
Форум игроделов » Записи участника » ivan2009 [41]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

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