задать новый Vector3 moveDirection = GameObject.FindGameObjectWithTag("nextTarget").transform.position - transform.position; ?:)
А я, честно говоря, не понимаю, как он определяет к какому повернуться, если их несколько одновременно. У них теги то одинаковые.
Добавлено (08 февраля 2015, 12:12) --------------------------------------------- Нужно чтобы он как-то поворачивался к последнему созданному, а не к первому.
Добавлено (08 февраля 2015, 12:49) --------------------------------------------- Починил лишь одной строчкой.
Скрипт, котрый создает таргет. Было:
Код
using UnityEngine; using System.Collections;
public class CameraScript : MonoBehaviour {
public Transform target; public static bool targetExists = false;
choopie, может лучше было бы записывать координаты в переменную, а не создавать новый обьект?
Ну вообще да, это было бы логичнее, но я хотел чтобы показывалась точка на экране, в которую бегу. Поэтому так и запилил. Ну, раз уж точка при нажатии появляется, пусть он к ней и бежит. Хотя я думаю эту систему можно было бы гораздо более легким и хорошим способом сделать, но что уж первое в голову пришло, я только учусь. =)
Добавлено (09 февраля 2015, 13:06) ---------------------------------------------
ЦитатаSkorpyX ()
choopie, может лучше было бы записывать координаты в переменную, а не создавать новый обьект?
Хотел так переделать, но что-то не получается. По нажатию мыши записывал в переменную координаты, собственно, мыши, а потом проверял, совпадают ли координаты игрока и этой переменной. Как ни пытался - не работает. >.<
Добавлено (09 февраля 2015, 13:43) --------------------------------------------- Запилил все-таки.
Если кому-то нужен скрипт для click-to-move движения:
Просто часто когда гуглишь какой-то вопрос\проблему, находишь темы на форумах, где кто-то таким же вопросом задается, и разочаровываешься, когда натыкаешься на ответ автора "все, разобрался" \ "все, сделал". А самого объяснения то и нету. х) Поэтому всегда оставляю решение, если сам где-то задаю вопрос. Скрипт работает - и ладно, может кому пригодится, если его гугл сюда приведет. :D
Сообщение отредактировал choopie - Понедельник, 09 Февраля 2015, 14:11
Всем привет. Пилю интвентарь, как в видео, по этой ссылочке. И есть проблема. :\ Не работает штука, которая работает у автора в видео. Судя по комментам, раньше работало у всех, а потом тоже перестало. Решения так и нету. В общем вот 3 скрипта:
Код
using UnityEngine; using System.Collections;
[System.Serializable] public class Item{ public string itemName; public int itemID; public string itemDesc; public Texture2D itemIcon; public int itemPower; public int itemSpeed; public ItemType itemType;
public enum ItemType{ Weapon, Consumable, Quest }
public Item(string name, int id, string desc, int power, int speed, ItemType type){ itemName = name; itemID = id; itemDesc = desc; itemIcon = Resources.Load<Texture2D>("Item Icons/" + name); itemPower = power; itemSpeed = speed; itemType = type; }
public Item(){
} }
Код
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class ItemDatabase : MonoBehaviour { public List<Item> items = new List<Item>();
void Awake(){ items.Add (new Item("Bronze Sword", 0, "A sword that is made of bronze", 2, 2, Item.ItemType.Weapon)); items.Add (new Item("Iron Axe", 1, "An axe that is made of iron", 3, 1, Item.ItemType.Weapon)); } }
Код
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class Inventory : MonoBehaviour { public int slotsX, slotsY; public GUISkin skin; public List<Item> inventory = new List<Item>(); public List<Item> slots = new List<Item>(); private ItemDatabase database; private bool showInventory;
void Start () { for(int i = 0; i < (slotsX * slotsY); i++) slots.Add (new Item());
Так вообще не работает, хотя в видео также и все нормально работает.
Также похожая конструкция не работает просто в функции Start:
Код
inventory[0] = database.items[1];
Хотя в видео все четко.
Работает только так:
Код
inventory.Add(database.items[1]);
А при использовании предыдущей пишет:
ArgumentOutOfRangeException: Argument is out of range. Parameter name: index System.Collections.Generic.List`1[Item].set_Item (Int32 index, .Item value) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/List.cs:639) Inventory.Start () (at Assets/Scripts/Inventory.cs:19)
Сообщение отредактировал choopie - Вторник, 10 Февраля 2015, 22:02
Сижу-копаюсь, вот к чему пришел: В Start работает вот так, например:
Код
inventory.Add (new Item()); inventory[0] = database.items[1];
Т.е. в принципе логично, в inventory[0] нет даже пустого класса - то и не добавляет. Если же прежде добавить пустой, то и запихивать на его место можно другие.
Но в видео все работает и без этого. :\ Так придется перед каждым итемом добавлять пустой, по порядку добавляется. На определенное место то никак не запилить. :\
Добавлено (10 февраля 2015, 22:25) --------------------------------------------- Тьфу ты, нашел ошибку. Он собственно так и делал, просто я пропустил это. Ну хоть сам догадался, что надо сделать.
Код
for(int i = 0; i < (slotsX * slotsY); i++){ slots.Add (new Item()); inventory.Add (new Item()); }
А у меня было просто:
Код
for(int i = 0; i < (slotsX * slotsY); i++) slots.Add (new Item());
Добавлено (10 февраля 2015, 22:28) --------------------------------------------- Почему-то дичайше лагать начало при отрисовке инвентаря, хотя раньше было все ок.
Подскажите пожалуйста, как можно поставить определённому источнику света только vertex-lit освещение. Я пробовал через Render mode источника, но Vertex-lit important и not important различаются!
эм.... вот поставить виртекс лит шейдер модели, назначить ей определенный слой, а в culling mask выбрать этот слой - я знаю. А вот про что ты говоришь, я не понимаю...
" Important Источник света рендерится пиксельным методом. Используйте данную опцию только для очень важных источников света (таких как, фары автомобиля игрока). Not Important Источник света рендерится быстрее всех предыдущих режимов рендеринга. Вершинный/объектный режим освещения."
Пасаны, не подскажите, как делают такую шнягу? Тайм-код прилагается. Может у вас где есть ссылочка на бесплатный ассет или что-то в этом роде. Я что-то даже хз как загуглить такую систему. Ну, типа создание штуки, для работы с кодом\скриптами во внутреннем интерфейсе Юнити.
Сообщение отредактировал choopie - Четверг, 12 Февраля 2015, 13:56
Почему не срабатывает? Вот такой простой код: находит переменную bool в скрипте AtarSC, и если она верна, то прибавляет единичку в счетчик. Но !- Если функция Update, то счетчик будет "крутиться" с дикой скоростью без остановки. А в Awake (где оно и должно быть, судя по уроку) - никакого эффекта. В чем причина, и как осуществить счетчик?
кто нибуть вкурсе как с eulerAngles взятого из Quaternion.LookRotation получать от 90 до -90 по оси X ?.. (вместо нужных получается в минус: 0,1,2 и тд. а в плюс: 0 и сразу 360,359 и тд)
Добавлено (14 февраля 2015, 12:01) --------------------------------------------- Vip_and_Rip,
Код
void Start () { InvokeRepeating("updtimer", 1.0f, 1.0f); } void updtimer() { //сюда пихай свой код }
Посмотри на какой обьект заносится ссылка в Tob(может у тебя на сцене несколько обьектов с именем "Atar") попробуй по тегу найти обьект GameObject.FindWithTag