|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
09.11.2013, 11:59
|
#1
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Uawi. Вопрос - ответ
Как сделать выборку из массива? Есть генерация по осям X -> Z по 5 боксов на каждую, как выбрать эти объекты?
По фото видно, что надо по Z выбрать весь третий ряд, а по X весь второй...
|
(Offline)
|
|
09.11.2013, 13:23
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Uawi. Вопрос - ответ
Поясни вопрос, что значит "Выбрать"?
|
(Offline)
|
|
09.11.2013, 16:17
|
#3
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Сообщение от pax
Поясни вопрос, что значит "Выбрать"?
|
То есть мне надо взять эти элементы и что-то сделать с ними, например сменить матреиал. Как сделать выборку
|
(Offline)
|
|
09.11.2013, 16:46
|
#4
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Uawi. Вопрос - ответ
Не знаю точно, но должны в map[x,z] быть хендлы на объекты.
в map[0,0] будет самый левый-верхний куб.
|
(Offline)
|
|
09.11.2013, 21:21
|
#5
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Сообщение от Nex
Не знаю точно, но должны в map[x,z] быть хендлы на объекты.
в map[0,0] будет самый левый-верхний куб.
|
Не, ну подсчитать я и так могу, а вот если их будет >500, то хочется увидеть оптимизированных способ.
|
(Offline)
|
|
09.11.2013, 21:47
|
#6
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Uawi. Вопрос - ответ
Сообщение от Uawi
Как сделать выборку из массива? Есть генерация по осям X -> Z по 5 боксов на каждую, как выбрать эти объекты?
По фото видно, что надо по Z выбрать весь третий ряд, а по X весь второй...
|
for( int x=0; x<xMax; x++){ doSomething(map[x,3]);} for( int z=0; z<zMax; z++){ doSomething(map[3,z]);}
как-то так
|
(Offline)
|
|
09.11.2013, 22:16
|
#7
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Сообщение от dsd
for( int x=0; x<xMax; x++){ doSomething(map[x,3]);} for( int z=0; z<zMax; z++){ doSomething(map[3,z]);}
как-то так
|
Спасибо, но я уже решил этот вопрос)))
Destroy(map[2,z]); Destroy(map[x,2]);
__________________
Не бойся если ты один...
Бойся если ты ноль...
|
(Offline)
|
|
10.11.2013, 00:03
|
#8
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Вот еще вопросик, как сделать так, чтобы объекты создавались один раз? Я сделал дополнительный цикл чтобы он сработал один раз, но объекты создаются 5 раз. Как предотвратить это?
using UnityEngine; using System.Collections;
public class Generation : MonoBehaviour { GameObject[,] map; // Префабы блока и растения public GameObject _blockprefab, _plantprefab; // Переменные для назначения максимального количества блоков по X и Z public int maxX, maxZ; // Дистанция между блоками и высота от боков public float _distance, _heightplantsdistance; public void Start () { map = new GameObject[maxX, maxZ]; for (int x = 0; x < maxX; x++) { for (int z = 0; z < maxZ; z++) { map[x, z] = (GameObject)Instantiate(_blockprefab, new Vector3(x * _distance, 0 , z * _distance), Quaternion.identity); for (int p = 0; p < 1; p++) { Instantiate (_plantprefab, new Vector3(2, _heightplantsdistance, z), Quaternion.identity); Instantiate (_plantprefab, new Vector3(x, _heightplantsdistance, 2), Quaternion.identity); } } } } }
__________________
Не бойся если ты один...
Бойся если ты ноль...
|
(Offline)
|
|
10.11.2013, 00:31
|
#9
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Uawi. Вопрос - ответ
using UnityEngine;
using System.Collections;
public class Generation : MonoBehaviour {
GameObject[,] map;
// Префабы блока и растения
public GameObject _blockprefab, _plantprefab;
// Переменные для назначения максимального количества блоков по X и Z
public int maxX, maxZ;
// Дистанция между блоками и высота от боков
public float _distance, _heightplantsdistance;
public void Start () {
map = new GameObject[maxX, maxZ];
for (int x = 0; x < maxX; x++) {
for (int z = 0; z < maxZ; z++) {
map[x, z] = (GameObject)Instantiate(_blockprefab, new Vector3(x * _distance, 0 , z * _distance), Quaternion.identity);
for (int p = 0; p < 1; p++) {
if(x==2) Instantiate (_plantprefab, new Vector3(2, _heightplantsdistance, z), Quaternion.identity);
if(z==2 && x!=2) Instantiate (_plantprefab, new Vector3(x, _heightplantsdistance, 2), Quaternion.identity);
}
}
}
}
}
каким нить условием
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.11.2013, 01:19
|
#10
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Сообщение от dsd
using UnityEngine;
using System.Collections;
public class Generation : MonoBehaviour {
GameObject[,] map;
// Префабы блока и растения
public GameObject _blockprefab, _plantprefab;
// Переменные для назначения максимального количества блоков по X и Z
public int maxX, maxZ;
// Дистанция между блоками и высота от боков
public float _distance, _heightplantsdistance;
public void Start () {
map = new GameObject[maxX, maxZ];
for (int x = 0; x < maxX; x++) {
for (int z = 0; z < maxZ; z++) {
map[x, z] = (GameObject)Instantiate(_blockprefab, new Vector3(x * _distance, 0 , z * _distance), Quaternion.identity);
for (int p = 0; p < 1; p++) {
if(x==2) Instantiate (_plantprefab, new Vector3(2, _heightplantsdistance, z), Quaternion.identity);
if(z==2 && x!=2) Instantiate (_plantprefab, new Vector3(x, _heightplantsdistance, 2), Quaternion.identity);
}
}
}
}
}
каким нить условием
|
Хмммм, занятно, попробуем днем. Спасибо
__________________
Не бойся если ты один...
Бойся если ты ноль...
|
(Offline)
|
|
10.11.2013, 18:39
|
#11
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Да, спасибо, помогло
__________________
Не бойся если ты один...
Бойся если ты ноль...
|
(Offline)
|
|
17.11.2013, 20:04
|
#12
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Разбираюсь с 2D. Как сделать плавное перемещение вверх до определенной позиции?
__________________
Не бойся если ты один...
Бойся если ты ноль...
|
(Offline)
|
|
17.11.2013, 20:33
|
#13
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Uawi. Вопрос - ответ
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.11.2013, 20:59
|
#14
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Сообщение от pax
|
Спасибо, вот огромное прямо!
А вот что это означало?
__________________
Не бойся если ты один...
Бойся если ты ноль...
|
(Offline)
|
|
17.11.2013, 21:23
|
#15
|
Оператор ЭВМ
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
|
Ответ: Uawi. Вопрос - ответ
Подскажите, почему один раз срабатывает? Как сделать так, чтобы нажал на кнопку и поехал вверх объект, а не как у меня... Нажал - > сдвинулся и остановился...
public void OnGUI () {
if (GUI.Button (new Rect (10, 10, 60, 30), "Вверх")) {
float _newposition = Mathf.SmoothDamp(_lift.transform.position.y, _positions[0 + up], ref yVelocity, _smoothTime);
_lift.transform.position = new Vector3(_lift.transform.position.x, _newposition, 0);
}
}
__________________
Не бойся если ты один...
Бойся если ты ноль...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:04.
|