Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 09.11.2013, 11:59   #1
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Uawi. Вопрос - ответ

Как сделать выборку из массива? Есть генерация по осям X -> Z по 5 боксов на каждую, как выбрать эти объекты?

По фото видно, что надо по Z выбрать весь третий ряд, а по X весь второй...
(Offline)
 
Ответить с цитированием
Старый 09.11.2013, 13:23   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Uawi. Вопрос - ответ

Поясни вопрос, что значит "Выбрать"?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 09.11.2013, 16:17   #3
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Ответ: Uawi. Вопрос - ответ

Сообщение от pax Посмотреть сообщение
Поясни вопрос, что значит "Выбрать"?
То есть мне надо взять эти элементы и что-то сделать с ними, например сменить матреиал. Как сделать выборку
(Offline)
 
Ответить с цитированием
Старый 09.11.2013, 16:46   #4
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Uawi. Вопрос - ответ

Не знаю точно, но должны в map[x,z] быть хендлы на объекты.
в map[0,0] будет самый левый-верхний куб.
(Offline)
 
Ответить с цитированием
Старый 09.11.2013, 21:21   #5
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Ответ: Uawi. Вопрос - ответ

Сообщение от Nex Посмотреть сообщение
Не знаю точно, но должны в map[x,z] быть хендлы на объекты.
в map[0,0] будет самый левый-верхний куб.
Не, ну подсчитать я и так могу, а вот если их будет >500, то хочется увидеть оптимизированных способ.
(Offline)
 
Ответить с цитированием
Старый 09.11.2013, 21:47   #6
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Uawi. Вопрос - ответ

Сообщение от Uawi Посмотреть сообщение
Как сделать выборку из массива? Есть генерация по осям X -> Z по 5 боксов на каждую, как выбрать эти объекты?
По фото видно, что надо по Z выбрать весь третий ряд, а по X весь второй...
for( int x=0x<xMaxx++){ doSomething(map[x,3]);}
for( 
int z=0z<zMaxz++){ doSomething(map[3,z]);} 
как-то так
(Offline)
 
Ответить с цитированием
Старый 09.11.2013, 22:16   #7
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Ответ: Uawi. Вопрос - ответ

Сообщение от dsd Посмотреть сообщение
for( int x=0x<xMaxx++){ doSomething(map[x,3]);}
for( 
int z=0z<zMaxz++){ doSomething(map[3,z]);} 
как-то так
Спасибо, но я уже решил этот вопрос)))
Destroy(map[2,z]);
                
Destroy(map[x,2]); 
__________________
Не бойся если ты один...
Бойся если ты ноль...
(Offline)
 
Ответить с цитированием
Старый 10.11.2013, 00:03   #8
Uawi
Оператор ЭВМ
 
Регистрация: 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 maxXmaxZ;
    
// Дистанция между блоками и высота от боков
    
public float _distance_heightplantsdistance;
    
    public 
void Start () {
        
map = new GameObject[maxXmaxZ];
        
        for (
int x 0maxXx++) {
            for (
int z 0maxZz++) {
                
map[xz] = (GameObject)Instantiate(_blockprefab, new Vector3(_distance_distance), Quaternion.identity);
                for (
int p 01p++) {
                    
Instantiate (_plantprefab, new Vector3(2_heightplantsdistancez), Quaternion.identity);
                    
Instantiate (_plantprefab, new Vector3(x_heightplantsdistance2), Quaternion.identity);                        
                }
            }
        }    
    }

__________________
Не бойся если ты один...
Бойся если ты ноль...
(Offline)
 
Ответить с цитированием
Старый 10.11.2013, 00:31   #9
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Uawi (10.11.2013)
Старый 10.11.2013, 01:19   #10
Uawi
Оператор ЭВМ
 
Регистрация: 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
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Ответ: Uawi. Вопрос - ответ

Да, спасибо, помогло
__________________
Не бойся если ты один...
Бойся если ты ноль...
(Offline)
 
Ответить с цитированием
Старый 17.11.2013, 20:04   #12
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Ответ: Uawi. Вопрос - ответ

Разбираюсь с 2D. Как сделать плавное перемещение вверх до определенной позиции?
__________________
Не бойся если ты один...
Бойся если ты ноль...
(Offline)
 
Ответить с цитированием
Старый 17.11.2013, 20:33   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Uawi. Вопрос - ответ

к примеру так http://docs.unity3d.com/Documentatio...moothDamp.html
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Uawi (17.11.2013)
Старый 17.11.2013, 20:59   #14
Uawi
Оператор ЭВМ
 
Регистрация: 08.11.2013
Сообщений: 39
Написано одно полезное сообщение
Ответ: Uawi. Вопрос - ответ

Сообщение от pax Посмотреть сообщение
Спасибо, вот огромное прямо!

А вот что это означало?
ref yVelocity
__________________
Не бойся если ты один...
Бойся если ты ноль...
(Offline)
 
Ответить с цитированием
Старый 17.11.2013, 21:23   #15
Uawi
Оператор ЭВМ
 
Регистрация: 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)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 23:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com