| Массивы в 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 |  |  |  |  |