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

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

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

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 25.02.2013, 22:58   #946
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Фак по Юнити.

Пакс, помнишь ты объяснил про MeshRenderer, с материалом разобрались. А как сам меш достать? не получается )

public class LOD MonoBehaviour {
    public 
MeshRenderer hiPolyPrefabmidPolyPrefablowPolyPrefab;
.....
//пробовал и так, и сяк
GetComponent<MeshFilter>().sharedMesh hiPolyPrefab;
GetComponent<MeshFilter>().sharedMesh hiPolyPrefab.GetComponent<MeshFilter>().sharedMesh
И всё не работает..
__________________
(Offline)
 
Ответить с цитированием
Старый 25.02.2013, 23:04   #947
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Второй вариант должен работать...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 26.02.2013, 09:18   #948
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Фак по Юнити.


GetComponent<MeshFilter>().sharedMesh hiPolyPrefab.GetComponent<MeshFilter>().sharedMesh
MissingReferenceException: The variable hiPolyPrefab of 'LOD' doesn't exist anymore.
You probably need to reassign the hiPolyPrefab variable of the 'LOD' script in the inspector.
UnityEngine.Component.GetComponent[MeshFilter] () (at C:/BuildAgent/work/812c4f5049264fad/Runtime/ExportGenerated/Editor/UnityEngineComponent.cs:132)



Извиняюсь, я сначала в скрипте написал Mesh, объявил префабы, потом заменил Mesh на MeshRenderer, а переменные не переобъявил. Компиль был прав )
__________________
(Offline)
 
Ответить с цитированием
Старый 05.03.2013, 19:37   #949
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Фак по Юнити.

Подскажите пожалуйста, мне нужен совет в реализации.
Есть динамически появляющиеся объекты, и мне надо чтобы игрок при взаимодействии с ними получал различные ресурсы, при условии что два разных дерева могут иметь один ресурс (древесина), и несколько ресурсов в одном объекте (например дерево имеет древесину и листву).

Помогите как лучше реализовать, своё имя, свой тэг, либо к объекту крепить скрипт с информацией о ресурсах.
__________________
(Offline)
 
Ответить с цитированием
Старый 05.03.2013, 20:09   #950
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Как-то так:

using UnityEngine;

public class 
ResourcesContainer:MonoBehaviour
{
     public 
enum ResourceType{WoodLeavesStoneGoldetc}
     
     [
System.Serializable]
     public class 
ResourcesItem
     
{
           public 
ResourceType type;
           public 
int count;
     }

     public 
ResourcesItem[] resources;


__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
burovalex (06.03.2013)
Старый 06.03.2013, 15:14   #951
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Фак по Юнити.

Спасибо Пакс! Было много вопросов, но решил на практике проверить и почти все отпали )

Получается System.Serializable задаётся для класса, и позволяет задавать значения в инспекторе для массивов этого класса?

И еще вопрос появился, для различных действий, с разными объектами такой же методой лучше пользоваться?
Разъясню, что я хочу сделать, допустим есть трава - её можно сорвать или срезать ножом, дерево - можно потрясти или срубить. Но и у разных деревьях должны быть разные характеристики, в зависимости от типа и размера.
Как думаете, подойдёт такой метод, допустим при нажатии кнопки, если у калайднутого объекта есть скрипт с набором действий, то проверять какое из существующих в нём действий выполнить.?
__________________
(Offline)
 
Ответить с цитированием
Старый 06.03.2013, 15:46   #952
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Сообщение от burovalex Посмотреть сообщение
Получается System.Serializable задаётся для класса, и позволяет задавать значения в инспекторе для массивов этого класса?
Переменная/массив/список (List<MySerializableType>)

Сообщение от burovalex Посмотреть сообщение
И еще вопрос появился, для различных действий, с разными объектами такой же методой лучше пользоваться?
Разъясню, что я хочу сделать, допустим есть трава - её можно сорвать или срезать ножом, дерево - можно потрясти или срубить. Но и у разных деревьях должны быть разные характеристики, в зависимости от типа и размера.
Как думаете, подойдёт такой метод, допустим при нажатии кнопки, если у калайднутого объекта есть скрипт с набором действий, то проверять какое из существующих в нём действий выполнить.?
Я бы сделал так:
1. базовый скрипт с виртуальным(или абстрактным) методом действия
2. скрипты наследники с выполнением нужного действия в этом методе (override)
3. вешаешь ан каждый объект нужные скрипты
4. при столкновении получаешь базовый скрипт с объекта и вызываешь этот метод, который у всех будет работать по разному, но вызываться одинаково

это называется полиморфизм
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 06.03.2013, 22:00   #953
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Фак по Юнити.

Спасибо Пакс, но мне пока что override не о чем не говорит, кроме перевод слова перезапись...

Рано походу мне до такого..
__________________
(Offline)
 
Ответить с цитированием
Старый 06.03.2013, 22:43   #954
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Думаю это прояснит ситуацию немного: http://msdn.microsoft.com/ru-ru/library/ms173152.aspx
Ну и про наследование для общего развития http://msdn.microsoft.com/ru-ru/library/ms173149.aspx
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
burovalex (07.03.2013)
Старый 07.03.2013, 21:44   #955
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Фак по Юнити.

Можно ли проверить, есть ли какой-либо геймобжект в определенной точке пространства? Если да, то пните меня в нужном направлении, пожалуйста.
(Offline)
 
Ответить с цитированием
Старый 07.03.2013, 22:22   #956
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

Если только так
GameObject[] goCollection =  FindObjectsOfType(typeof(GameObject)) as GameObjectt[];
for(int i=0; i<goCollection.Lenght; i++)
{
  if(goCollection[i].transform.position == foundPosition)
  {
    Debug.Log("Profit");
    break;
  }
}
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Andvrok (08.03.2013)
Старый 07.03.2013, 22:34   #957
seaman
Знающий
 
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений
(для 180 пользователей)
Ответ: Фак по Юнити.

про наследование для общего развития
Наследование "на пальцах".
Если да, то пните меня в нужном направлении, пожалуйста.
Physics.OverlapSphere
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо seaman за это полезное сообщение:
Andvrok (09.03.2013), burovalex (13.03.2013), Lestar (07.03.2013), RegIon (13.03.2013)
Старый 12.03.2013, 20:18   #958
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Фак по Юнити.

Подскажите правильно ли я сделал..

У меня есть трава, которая растет пучками и с которым мне надо взаимодействовать по наведению на нее.
Решил использовать луч от центра экрана, но чтобы "колайднуть" траву, ей приходится создавать коллайдер, а чтобы игрок не врезался в траву - сделал её триггером.

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

Прав ли я? И что лучше сделать?
__________________
(Offline)
 
Ответить с цитированием
Старый 12.03.2013, 21:46   #959
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Есть слои и в настройках физики можно настраивать столкновение между слоями.
http://docs.unity3d.com/Documentatio...csManager.html

Стрелять по слою травы можно используя маску с нужным слоем.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
burovalex (13.03.2013)
Старый 13.03.2013, 10:07   #960
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Фак по Юнити.

Спасибо Пакс, помог! Только у меня луч не хочет находить конкретный слой.
Распишу: создал новый слой "JustRayCast" в первой пользовательской ячейке (User Layer 8 ) , выбрал на паре примитивов этот слой, на других оставил Default. Когда начал кастить именно этот слой - ничего не выбирает, когда Default - все выбирает.
Хотя lay = 8..
Матрицу коллизий пока не трогал

using UnityEngine;
using System.Collections;

public class 
Look MonoBehaviour {
    
    public 
Ray ray;
    public 
RaycastHit hit;
    public 
Vector3 screenCenter;
    public 
int lay;
    public 
GameObject hitObject;
    public 
Vector3 hitedPosition;

    
void Start () {
    
screenCenter = new Vector3(Screen.width/2fScreen.height/2f0);
    
lay = (int)LayerMask.NameToLayer("JustRayCast");
    }
    
    
void Update () {
    
ray Camera.main.ScreenPointToRay(screenCenter);
        
    if (
Physics.Raycast(rayout hit5flay))
        {
        
hitObject hit.collider.gameObject;
        
hitedPosition hit.collider.transform.position;
        }
    }

__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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