forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Uawi. Вопрос - ответ (http://forum.boolean.name/showthread.php?t=18687)

Uawi 09.11.2013 11:59

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

По фото видно, что надо по Z выбрать весь третий ряд, а по X весь второй...

pax 09.11.2013 13:23

Ответ: Uawi. Вопрос - ответ
 
Поясни вопрос, что значит "Выбрать"?

Uawi 09.11.2013 16:17

Ответ: Uawi. Вопрос - ответ
 
Цитата:

Сообщение от pax (Сообщение 269838)
Поясни вопрос, что значит "Выбрать"?

То есть мне надо взять эти элементы и что-то сделать с ними, например сменить матреиал. Как сделать выборку

Nex 09.11.2013 16:46

Ответ: Uawi. Вопрос - ответ
 
Не знаю точно, но должны в map[x,z] быть хендлы на объекты.
в map[0,0] будет самый левый-верхний куб.

Uawi 09.11.2013 21:21

Ответ: Uawi. Вопрос - ответ
 
Цитата:

Сообщение от Nex (Сообщение 269854)
Не знаю точно, но должны в map[x,z] быть хендлы на объекты.
в map[0,0] будет самый левый-верхний куб.

Не, ну подсчитать я и так могу, а вот если их будет >500, то хочется увидеть оптимизированных способ.

dsd 09.11.2013 21:47

Ответ: Uawi. Вопрос - ответ
 
Цитата:

Сообщение от Uawi (Сообщение 269835)
Как сделать выборку из массива? Есть генерация по осям X -> Z по 5 боксов на каждую, как выбрать эти объекты?
По фото видно, что надо по Z выбрать весь третий ряд, а по X весь второй...

PHP код:

for( int x=0x<xMaxx++){ doSomething(map[x,3]);}
for( 
int z=0z<zMaxz++){ doSomething(map[3,z]);} 

как-то так

Uawi 09.11.2013 22:16

Ответ: Uawi. Вопрос - ответ
 
Цитата:

Сообщение от dsd (Сообщение 269899)
PHP код:

for( int x=0x<xMaxx++){ doSomething(map[x,3]);}
for( 
int z=0z<zMaxz++){ doSomething(map[3,z]);} 

как-то так

Спасибо, но я уже решил этот вопрос)))
PHP код:

Destroy(map[2,z]);
                
Destroy(map[x,2]); 


Uawi 10.11.2013 00:03

Ответ: Uawi. Вопрос - ответ
 
Вот еще вопросик, как сделать так, чтобы объекты создавались один раз? Я сделал дополнительный цикл чтобы он сработал один раз, но объекты создаются 5 раз. Как предотвратить это?

PHP код:

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);                        
                }
            }
        }    
    }



dsd 10.11.2013 00:31

Ответ: 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);                       
                }
            }
        }   
    }
}

каким нить условием

Uawi 10.11.2013 01:19

Ответ: Uawi. Вопрос - ответ
 
Цитата:

Сообщение от dsd (Сообщение 269909)
Код:

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);                       
                }
            }
        }   
    }
}

каким нить условием

Хмммм, занятно, попробуем днем. Спасибо

Uawi 10.11.2013 18:39

Ответ: Uawi. Вопрос - ответ
 
Да, спасибо, помогло

Uawi 17.11.2013 20:04

Ответ: Uawi. Вопрос - ответ
 
Разбираюсь с 2D. Как сделать плавное перемещение вверх до определенной позиции?

pax 17.11.2013 20:33

Ответ: Uawi. Вопрос - ответ
 
к примеру так http://docs.unity3d.com/Documentatio...moothDamp.html

Uawi 17.11.2013 20:59

Ответ: Uawi. Вопрос - ответ
 
Цитата:

Сообщение от pax (Сообщение 270363)

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

А вот что это означало?
Код:

ref yVelocity

Uawi 17.11.2013 21:23

Ответ: 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);                       
                }
        }



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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot