|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
12.01.2013, 21:51
|
#991
|
Оператор ЭВМ
Регистрация: 11.01.2013
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от pax
|
по нажатию кнопки ни чего не открывается(((
|
(Offline)
|
|
12.01.2013, 22:44
|
#992
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
найди проект через Unity Asset Store (Window => Asset Store)
|
(Offline)
|
|
12.01.2013, 23:31
|
#993
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
по нажатию кнопки ни чего не открывается(((
|
Может нужна регистрация на unity3d.com? У меня все открывается.
|
(Offline)
|
|
12.01.2013, 23:38
|
#994
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
Доброго времени суток.
Интересует возможность сделать синглмеш.
Что-то типа AddMesh на блице.
В справке нашёл функцию Mesh.CombineMeshes, но не получается ей воспользоваться.
Так же в справке к данной функции указан код:
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]; i = 0; while (i < 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; } }
__________________
|
(Offline)
|
|
13.01.2013, 00:11
|
#995
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Примерно так:
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);
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.01.2013, 14:16
|
#996
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопросы от новичка
При переходе с С++ на С# я не совсем понимаю работу с массивами. Например в коде
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 с заданным положением в пространстве, чтобы потом присваивать их другим выборочным объектам в игре...
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
13.01.2013, 14:41
|
#997
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от Morganolla
При переходе с С++ на С# я не совсем понимаю работу с массивами. Например в коде
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 с заданным положением в пространстве, чтобы потом присваивать их другим выборочным объектам в игре...
|
Это массив ссылок на то, чего еще нет,так, как я понял, нельзя сделать объект, нужно типо так:
Vector3 pos=new Vector3(-105, 281, 0.5f); ObjPos[0] = Instance(transform,pos,transform.rotation) as Transform;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.01.2013, 14:51
|
#998
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от Костян
Vector3 pos=new Vector3(-105, 281, 0.5f); ObjPos[0] = Instance(transform,pos,transform.rotation) as Transform;
|
Скорее
ObjPos[i] = new GameObject("MyPivot"+i).transfrom;
А еще прокомментирую то, что если создавать массив публичным, то Unity серлиализует его. Т.е. если ты изменишь его в редакторе, то в итоге его данные будут присутствовать, а не new Transfom[8]
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.01.2013, 00:21
|
#999
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
Вот такой вод код создаёт новый гамеобжект и помещает в него все меши.
Но все меши помещаются в 0,0,0 как сохранить их положение и размер которые задаются перед соединением?
GameObject map1 = GameObject.CreatePrimitive(PrimitiveType.Cube); map1.name = "map1"; map1.transform.position = new Vector3(0, 0, 0); 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 = 0; x < 38; x++) { for (int z = 0; z < 38; z++) { if (LMap[x,z]<1) { x1=x+0.5f; z1=z+0.5f; s1=Random.Range(0, 0.5f); groundPoint = GetHeight(ref x1,ref z1); GameObject inst = (GameObject)Instantiate(Resources.Load("Model/wood", typeof(GameObject))); inst.transform.eulerAngles = new Vector3( Random.Range(0, 15)-90, Random.Range(0, 360), Random.Range(0, 15)); inst.transform.position = groundPoint; inst.transform.localScale += new Vector3(s1, Random.Range(0, 0.5f), s1); Mesh me = inst.GetComponent<MeshFilter>().mesh; instances[i].mesh = me; instances[i].transform = Matrix4x4.identity; i=i+1; } } } m1.CombineMeshes(instances);
__________________
|
(Offline)
|
|
14.01.2013, 00:32
|
#1000
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
вместо
instances[i].transform = Matrix4x4.identity;
поставить
instances[i].transform = inst.transform.localToWorldMatrix;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.01.2013, 04:04
|
#1001
|
Разработчик
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений (для 670 пользователей)
|
Ответ: Вопросы от новичка
Есть генерированный в скрипте меш.
RecalculateNormals() делает освещение правильным, расчёт тангентов делает бамп правильным.
Как на нём настроить группы сглаживания? Необходимо чтобы у всего меша была одна группа сглаживания. Без ступенек.
На блице такой же алгоритм давал необходимый результат (сразу у всего меша была одна группа сглаживания).
__________________
|
(Offline)
|
|
14.01.2013, 07:15
|
#1002
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
А сразу в один меш уровень сгенерировать никак? У тебя разные вершины в точках "соединения" частей, они имеют разные нормали. Ну и рассчитываются отдельно. Если бы была одна вершина, то одна нормаль для соединения сделала бы сглаживание.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.01.2013, 13:56
|
#1003
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопросы от новичка
Как сделать некоторые глобальные данные для всего проекта, чтобы можно было передавать их между разными сценами, уровнями и т.д. ?
Сделать какой то static класс? Если можно приведите какой то пример для подробного рассмотрения...Буду благодарен
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
|
(Offline)
|
|
14.01.2013, 14:27
|
#1004
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
любые статик переменные передаются между сценами, кроме объектов Unity. Чтобы передавать их между сценами используй http://docs.unity3d.com/Documentatio...royOnLoad.html
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.01.2013, 23:24
|
#1005
|
Бывалый
Регистрация: 03.12.2008
Адрес: наша раша
Сообщений: 762
Написано 129 полезных сообщений (для 245 пользователей)
|
Ответ: Вопросы от новичка
Добавил на сцену музыку - аудио клип и прикрепил к объекту на сцене, а она не играет. В чем может быт проблема?
Вроде все параметры выставил - Play On Awake +, Max Distance =10000 и т.д....
Вроде переформатировал в 2Д - заиграло...
__________________
Reality Simulation Games
Core 2 Duo 2,8GHz, RAM 1Gb, ATI R5670 1Gb. WinXP 32
Последний раз редактировалось Morganolla, 15.01.2013 в 00:35.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:28.
|