Массивы в Unity
|
|
Gomg | Дата: Среда, 01 Августа 2012, 16:54 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| У меня есть Лист расширяющийся массив в нем забиты объекты с тегом Item, у каждого объекта есть идентификатор ItemType типа String, как произвести поиск по этой переменной ItemType, с тегом Item, и добавить их в другой массив.
Короче моя задумка такова: хочу чтобы мясо с тегом Item, ItemType = "Meat", subtype = "RatMeat" Жарилось то есть через некоторое время превращалось в модель уже готового мяса, но возле костра - объекта с тегом Item, ItemType ="Static", subtype ="Fire" проблема в том, что у меня есть кусок кода Code void Update () { if (ItemType == "Meat") if(subtype == "RatMeat") // тут надо добавить в другой массив объект с ItemType = "Fire" if(transform.position - //тут будет что-то но как реализовать? код конечно корявый но если подскажете буду благодарен, заранее спасибо!
|
|
| |
gmmmm | Дата: Среда, 01 Августа 2012, 19:42 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| У меня есть своя идея как сделать "мясо жаренным". Логика: Допустим создадим куб, просто примитив. Имя beef. Далее создаем нашу камеру, чтобы наблюдать за кубом. Создаем c# скрипт Beef и сразу вешаем на куб.
Code using UnityEngine; using System.Collections;
public class Beef : MonoBehaviour { public GameObject beef1; //Мясо public float timeInterval; private float timer; private int i = 0; public Texture texture_1; // Use this for initialization void Start () { timer = timeInterval; } // Update is called once per frame void Update () { if (beef1 != null) { timer -= Time.deltaTime; if(timer < 0) { i++; if (i == 10) //через 10 секунд мясо готово, меняем текстуру мяса обычного на прожаренное. { Debug.Log ("Beef is ok"); beef1.renderer.material.mainTexture = texture_1; } timer = timeInterval; } } } }
В свойствах скрипта в кубе делаем как на скрине. Через 10 секунд текстура стандартная сменится на другую, у тебя например обычное мясо на прожаренное. RgHost
пусто!)
Сообщение отредактировал gmmmm - Среда, 01 Августа 2012, 20:00 |
|
| |
Gomg | Дата: Четверг, 02 Августа 2012, 03:07 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| а замена именно объекта с# предусматривает? и как включить проверку на дистанцию от одного объекта до другого? ведь у костра должно жариться.
|
|
| |
gmmmm | Дата: Четверг, 02 Августа 2012, 05:18 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Думаю предусматривает, но мои познания в сишарпе не так велики, я к сожалению не знаю. Проверка на дистанцию разумеется есть. В начале
В void Update ()
Code dist = Vector3.Distance(объект1.transform.position, объект2.transform.position);
Объекты должны быть типа GameObject.
Code if (dist <= 3) //например трем, то...
пусто!)
|
|
| |
Gomg | Дата: Четверг, 02 Августа 2012, 05:24 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| gmmmm, как дистанцию рассчитать это понятно но как указать объект, короче щас скрипт скину
Code public Transform myTransform; public string typeItem; public string subtype; public float distance; public List<Transform> items; void Start () { items = new List<Transform>(); myTransform = transform; AddAllItems(); }
void Update () { if (typeItem == "Meat") if(subtype == "DeerMeat") distance = Vector3.Distance(transform.position, //вот тут как указать объект с тем же тегом и скриптом, но с другой переменной typeItem, например = fire } private void AddAllItems(){ GameObject[] go = GameObject.FindGameObjectsWithTag("Item"); foreach (GameObject item in go) AddItemInList(item.transform); } private void AddItemInList(Transform item){ items.Add(item); } }
Сообщение отредактировал Gomg - Четверг, 02 Августа 2012, 05:25 |
|
| |