forum.boolean.name

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

GooV 12.01.2013 21:51

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 249252)
В стандартном примере платформера было такое решение http://u3d.as/content/unity-technolo...r-tutorial/3yF

по нажатию кнопки ни чего не открывается(((

pax 12.01.2013 22:44

Ответ: Вопросы от новичка
 
найди проект через Unity Asset Store (Window => Asset Store)

seaman 12.01.2013 23:31

Ответ: Вопросы от новичка
 
Цитата:

по нажатию кнопки ни чего не открывается(((
Может нужна регистрация на unity3d.com? У меня все открывается.

mauNgerS 12.01.2013 23:38

Ответ: Вопросы от новичка
 
Доброго времени суток.

Интересует возможность сделать синглмеш.
Что-то типа AddMesh на блице.

В справке нашёл функцию Mesh.CombineMeshes, но не получается ей воспользоваться.

Так же в справке к данной функции указан код:
PHP код:

using UnityEngine;
using System.Collections;

[
RequireComponent(typeof(MeshFilter))]
[
RequireComponent(typeof(MeshRenderer))]
public class 
example MonoBehaviour {
    
void Start() {
        
Component[] meshFilters GetComponentsInChildren<MeshFilter>();
        
CombineInstance[] combine = new CombineInstance[meshFilters.length];
        
0;
        while (
meshFilters.length) {
            
combine[i].mesh meshFilters[i].sharedMesh;
            
combine[i].transform meshFilters[i].transform.localToWorldMatrix;
            
meshFilters[i].gameObject.active false;
            
i++;
        }
        
transform.GetComponent<MeshFilter>().mesh = new Mesh();
        
transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combine);
        
transform.gameObject.active true;
    }



pax 13.01.2013 00:11

Ответ: Вопросы от новичка
 
Примерно так:
PHP код:

Mesh oneMesh = new Mesh();
Mesh otherMesh = new Mesh();
Mesh combinedMesh = new Mesh();

CombineInstance[] instances = new CombineInstance[2];

instances[0].mesh oneMesh;
instances[0].transform Matrix4x4.identity;

instances[1].mesh otherMesh;
instances[1].transform Matrix4x4.identity;

combinedMesh.CombineMeshes(instances); 


Morganolla 13.01.2013 14:16

Ответ: Вопросы от новичка
 
При переходе с С++ на С# я не совсем понимаю работу с массивами. Например в коде
Код:

public class StartAnimator : MonoBehaviour {
       
        public Transform[] ObjPos= new Transform[8];
        void Start ()
        {
                ObjPos[0].position = new Vector3(-105, 281, 0.5f); // возможно здесь ошибка !!!!
.....................................................
......................................................
.......................................................
}

я создаю массив ObjPos - ссылок на объекты Transform или сами эти объекты Transform???
Если это массив ссылок, то как создать сами объекты?
Мне нужно иметь массив объектов Transform с заданным положением в пространстве, чтобы потом присваивать их другим выборочным объектам в игре...

RegIon 13.01.2013 14:41

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Morganolla (Сообщение 249308)
При переходе с С++ на С# я не совсем понимаю работу с массивами. Например в коде
Код:

public class StartAnimator : MonoBehaviour {
   
    public Transform[] ObjPos= new Transform[8];
    void Start ()
    {
                ObjPos[0].position = new Vector3(-105, 281, 0.5f); // возможно здесь ошибка !!!!
.....................................................
......................................................
.......................................................
}

я создаю массив ObjPos - ссылок на объекты Transform или сами эти объекты Transform???
Если это массив ссылок, то как создать сами объекты?
Мне нужно иметь массив объектов Transform с заданным положением в пространстве, чтобы потом присваивать их другим выборочным объектам в игре...

Это массив ссылок на то, чего еще нет,так, как я понял, нельзя сделать объект, нужно типо так:
PHP код:

Vector3 pos=new Vector3(-1052810.5f);
ObjPos[0]  = Instance(transform,pos,transform.rotation) as Transform


pax 13.01.2013 14:51

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Костян (Сообщение 249310)
PHP код:

Vector3 pos=new Vector3(-1052810.5f);
ObjPos[0]  = Instance(transform,pos,transform.rotation) as Transform


Скорее

PHP код:

ObjPos[i] = new GameObject("MyPivot"+i).transfrom

А еще прокомментирую то, что если создавать массив публичным, то Unity серлиализует его. Т.е. если ты изменишь его в редакторе, то в итоге его данные будут присутствовать, а не new Transfom[8]

mauNgerS 14.01.2013 00:21

Ответ: Вопросы от новичка
 
Вот такой вод код создаёт новый гамеобжект и помещает в него все меши.

Но все меши помещаются в 0,0,0 как сохранить их положение и размер которые задаются перед соединением?


PHP код:

GameObject map1 GameObject.CreatePrimitive(PrimitiveType.Cube);        
map1.name "map1";        
map1.transform.position = new Vector3(000);
Destroy(map1.GetComponent<Collider>());
MeshRenderer mr1 map1.GetComponent<MeshRenderer>();
mr1.material = (Material)Resources.Load("Model/Materials/wood",typeof(Material));
        
Mesh m1 map1.GetComponent<MeshFilter>().mesh;
m1.Clear();

CombineInstance[] instances = new CombineInstance[i];
i=0;
for (
int x 038x++)
{
    for (
int z 038z++)
    {
        if (
LMap[x,z]<1)
        {
            
x1=x+0.5f;
            
z1=z+0.5f;
            
s1=Random.Range(00.5f);
            
groundPoint GetHeight(ref x1,ref z1);
            
GameObject inst = (GameObject)Instantiate(Resources.Load("Model/wood"typeof(GameObject)));
            
inst.transform.eulerAngles = new Vector3Random.Range(015)-90Random.Range(0360), Random.Range(015));
            
inst.transform.position groundPoint;                
            
inst.transform.localScale += new Vector3(s1Random.Range(00.5f), s1);
            
Mesh me inst.GetComponent<MeshFilter>().mesh;
            
instances[i].mesh me;
            
instances[i].transform Matrix4x4.identity;
            
i=i+1;
        }
    }
}
m1.CombineMeshes(instances); 


pax 14.01.2013 00:32

Ответ: Вопросы от новичка
 
вместо
PHP код:

instances[i].transform Matrix4x4.identity

поставить
PHP код:

instances[i].transform inst.transform.localToWorldMatrix


mauNgerS 14.01.2013 04:04

Ответ: Вопросы от новичка
 
Вложений: 1
Есть генерированный в скрипте меш.

RecalculateNormals() делает освещение правильным, расчёт тангентов делает бамп правильным.

Как на нём настроить группы сглаживания? Необходимо чтобы у всего меша была одна группа сглаживания. Без ступенек.

На блице такой же алгоритм давал необходимый результат (сразу у всего меша была одна группа сглаживания).

pax 14.01.2013 07:15

Ответ: Вопросы от новичка
 
А сразу в один меш уровень сгенерировать никак? У тебя разные вершины в точках "соединения" частей, они имеют разные нормали. Ну и рассчитываются отдельно. Если бы была одна вершина, то одна нормаль для соединения сделала бы сглаживание.

Morganolla 14.01.2013 13:56

Ответ: Вопросы от новичка
 
Как сделать некоторые глобальные данные для всего проекта, чтобы можно было передавать их между разными сценами, уровнями и т.д. ?
Сделать какой то static класс? Если можно приведите какой то пример для подробного рассмотрения...Буду благодарен :)

pax 14.01.2013 14:27

Ответ: Вопросы от новичка
 
любые статик переменные передаются между сценами, кроме объектов Unity. Чтобы передавать их между сценами используй http://docs.unity3d.com/Documentatio...royOnLoad.html

Morganolla 14.01.2013 23:24

Ответ: Вопросы от новичка
 
Добавил на сцену музыку - аудио клип и прикрепил к объекту на сцене, а она не играет. В чем может быт проблема?
Вроде все параметры выставил - Play On Awake +, Max Distance =10000 и т.д....

Вроде переформатировал в 2Д - заиграло...


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

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