Пятница, 22 Ноября 2024, 22:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • andarkyДата: Вторник, 22 Июля 2014, 17:31 | Сообщение # 6321
    старожил
    Сейчас нет на сайте
    есть ли в Унити методы типа OnWindowResize()
    ну это если я изменил размеры окна - чтобы потом пересчитать координаты для ГУИ

    или всё самому писать в Упдате() ??



    Моя страничка по дизайну
    GameDev//Design//3D
    Ютубчик
    ЛевшаДата: Вторник, 22 Июля 2014, 19:58 | Сообщение # 6322
    почти ветеран
    Сейчас нет на сайте
    Универсальный контроллер GUI интерфейса. (Js)

    X.cor.R (Prologue)
    berilДата: Вторник, 22 Июля 2014, 20:40 | Сообщение # 6323
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Видео cool



    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    ArtanielДата: Вторник, 22 Июля 2014, 20:47 | Сообщение # 6324
    частый гость
    Сейчас нет на сайте
    Цитата Vip_and_Rip ()
    Клонируется персонаж при загрузке предыдущего уровня.
    Перехожу на новую сцену, потом возвращаюсь к старой - и на карте два персонажа. Как решить?
    Пользовался стандартным скриптом через Application.LoadLevel, и DontDestroy.

    Забавно, если перейти на следующую локацию, то будет уже три игрока, четыре, и так далее...


    Могу посоветовать два приема. Первый:
    Создаем нулевую сцену. В нее закладываем все объекты которые должны быть уникальными, но и быть во всех последующих сценах. Нашего персонажа в частности.
    Камеру стыдливо прикрываем загрузочным экраном, чтобы геймеры не знали откуда берутся персонажи.
    Всем нужным объектам назначаем DontDestroy.
    И только потом грузим первую игровую сцену. Естественно в ней персонажа уже не должно быть.
    Возвращаться в нулевую сцену нельзя, но возвраты в первую уже не навредят.

    Второй, несколько более костыльно-кустарный, но без лишних сцен.
    Представь что ты и есть этот персонаж, ты приходишь в себя (Awake()), смотришь по сторонам, ищешь похожие объекты.
    Если никого не находишь, то ты и есть уникальный настоящий мальчик.
    Если находишь, еще и такого что себя считает настоящим, то понимаешь что ты клон, что места в жизни для тебя нет, печалишься, уходишь в депрессию, запой, и в конце концов заканчиваешь жизнь самоубийством (gameobject.Destroy();).
    Как найти, это уже дело техники, я например в редакторе создавал персонажа с названием PlayerCharNew. Если он не находил GameObject.Find ("PlayerChar"), то сам менял имя на PlayerChar, иначе убивался.
    Естественно будет много проблем если имя персонажа не уникальное. Но и там можно чтото придумать с флагами в скриптах или tag-ами.
    richardknoxДата: Вторник, 22 Июля 2014, 22:49 | Сообщение # 6325
    был не раз
    Сейчас нет на сайте
    У меня есть анимации персонажа как сделать персонажа с этими анимациями?
    Дайте ссылку на урок
    с меня +
    Vip_and_RipДата: Вторник, 22 Июля 2014, 23:21 | Сообщение # 6326
    почетный гость
    Сейчас нет на сайте
    А как задать несколько точек спавна на карте? Допустим, у меня есть одна большая локация - и в ней несколько поменьше. Как расставить точки спавна возле каждого входа отдельно?

    Больше никогда не буду делать игры.
    AntonybaeДата: Среда, 23 Июля 2014, 15:45 | Сообщение # 6327
    частый гость
    Сейчас нет на сайте
    Помогите ,пожалуйста, разобраться. Unity Free. Я делаю эквалайзер, скрипт читает аудио спектрум и правильно заносит все данные в массив, но когда дело доходит до увеличения объекта по оси Z, то тут(хоть объект и принимает в испекторе правильные значения) сам же объект похоже принимает значение равное нулю(по Z), хотя значение должно быть на уровне(как минимум) 1.6...


    P.S. Проблема решена) Оказалось,что данные спектра были слишком малы даже для инспектора


    Сообщение отредактировал Antonybae - Среда, 23 Июля 2014, 17:07
    allodsДата: Среда, 23 Июля 2014, 16:48 | Сообщение # 6328
    почти ветеран
    Сейчас нет на сайте
    Цитата Vip_and_Rip ()
    А как задать несколько точек спавна на карте? Допустим, у меня есть одна большая локация - и в ней несколько поменьше. Как расставить точки спавна возле каждого входа отдельно?


    Хочется сказать " руками " или "клешнями" wacko

    Вопрос просто суперски понятный . Задай еще разок только на понятном
    richardknoxДата: Среда, 23 Июля 2014, 17:57 | Сообщение # 6329
    был не раз
    Сейчас нет на сайте
    закинул в юнити модельку синема почему не открывается кнопка open
    Vip_and_RipДата: Среда, 23 Июля 2014, 19:05 | Сообщение # 6330
    почетный гость
    Сейчас нет на сайте
    Цитата allods ()
    Хочется сказать " руками " или "клешнями"

    Вопрос просто суперски понятный . Задай еще разок только на понятном


    На игроке висит скрипт, в котором прописаны координаты точек спавна для каждой локации. "Входя" через "дверь" (application.loadlevel) на новую локацию, он оказывается на конкретной точке (например, рядом дверью, которая согласно игровому миру, выходит в большой мир). Совсем как в Fallout или Skyrim.
    Но тут проблема - в скрипте могу прописать только по одной точке координат. А в одной локации "дверей" может быть много. Потому и спрашиваю, как прописать множество точек спавна, для каждого отдельного входа на локацию?


    Больше никогда не буду делать игры.
    GantZ_YakaДата: Среда, 23 Июля 2014, 19:31 | Сообщение # 6331
    почетный гость
    Сейчас нет на сайте
    Цитата Vip_and_Rip ()
    Но тут проблема - в скрипте могу прописать только по одной точке координат

    можно попробовать сделать отдельный dont destroy скрипт для управления переходами между локациями, который бы и запускал loadlevel, вызывают запуски в нем пусть триггеры, расставленные в сценах, передавая текущее местонахождение игрока и название следующей сцены, которую надо загрузить. А в управляющем скрипте бы производилась выборка, в какую точку игрока кидать после загрузки, например можно использовать словарь (dictionary), где ключ будет string - название места триггера, а соответствующее ключу значение - transform, - кубик, точка спавна. Из локации ПЕЩЕРА, например, выходишь в локацию МИР - в скрипте вызывается загрузка уровня МИР а потом поиск по словарю ключа ПЕЩЕРА, и смотрим соответствующее значение - координату спавна.


    Сообщение отредактировал GantZ_Yaka - Среда, 23 Июля 2014, 19:31
    AdomДата: Среда, 23 Июля 2014, 20:59 | Сообщение # 6332
    Печенька!
    Сейчас нет на сайте
    Такой вопрос. Что удобнее GUILayout или просто через Rect делать ? И что из этого компактнее ?
    allodsДата: Среда, 23 Июля 2014, 23:45 | Сообщение # 6333
    почти ветеран
    Сейчас нет на сайте
    Цитата Vip_and_Rip ()
    как прописать множество точек спавна


    public Vector3[] positionLocation;

    вам я так понимаю это надо?


    Сообщение отредактировал allods - Среда, 23 Июля 2014, 23:45
    AdomДата: Четверг, 24 Июля 2014, 09:13 | Сообщение # 6334
    Печенька!
    Сейчас нет на сайте
    В общем .Все еще мучаюсь с вопросом о никах.
    Теперь сделал малость по другому . Теперь имя игрока отображается в GUIText . Так-же изменил проверку имени. Теперь что-бы увидеть имя луч должен попасть в объект с компонентом Name и там-же висит скрипт который отвечает за изменение имени но опять-же ничего у меня не вышло=(.
    Вот скрипты .

    Он проверяет столкновение с объектом Name.
    Код
    using UnityEngine;
    using System.Collections;

    public class GUI_Name : MonoBehaviour {
    public Transform Point;
    public GUIText PlayerName;
    public RaycastHit Hit;
    public string HitName;
    // Use this for initialization
    void Start () {
    PlayerName = GameObject.FindWithTag("PlayerName").GetComponent<GUIText>();  
    }
    // Update is called once per frame
    [RPC]
    void Update () {
    if(networkView.isMine){  
    Vector3 Direction = Point.TransformDirection(Vector3.forward);
    if(Physics.Raycast(Point.position, Direction, out Hit, 10000f)){
    if(Hit.transform.GetComponent<Name>().GUI_Name){
    HitName=Hit.transform.name;
    PlayerName.text=HitName;
    Hit.transform.networkView.RPC("SetName",RPCMode.AllBuffered,Hit.transform.name);
    }else{
    if(!Hit.transform.GetComponent<Name>()){
    PlayerName.text="";
    }
    }
    }
    }
    }
    }


    А этот назначает имя.

    Код
    using UnityEngine;
    using System.Collections;

    public class Name : MonoBehaviour {
    public Transform OBJ;
    public string _NAME;
    public GUIText GUI_Name;
    // Use this for initialization
    void Start () {
       
    }
    [RPC]  
    // Update is called once per frame
    void Update () {
    GUI_Name = GameObject.FindWithTag("PlayerName").GetComponent<GUIText>();   
    }
    [RPC]
    void OnGUI(){
    if (networkView.isMine) {
    _NAME=GUI.TextArea(new Rect(10,100,150,25),_NAME);
    OBJ.name=_NAME;
    }
    }
    [RPC]
    public void SetName(){
    OBJ.name=_NAME;
    GUI_Name.text = OBJ.name;
    GUI_Name.text = _NAME;
    }
    }
    Fr0sTДата: Четверг, 24 Июля 2014, 12:16 | Сообщение # 6335
    постоянный участник
    Сейчас нет на сайте
    Народ!Сделал уровень одной моделью,а деревья и камни раскидал уже в редакторе.Виснет,когда смотрю даже издалека на это все,когда отворачиваюсь,не виснет,на камере прорисовку не такую далекую даже поставил.Чего сделать?Скриптом отключать видимость объектор если далеко отошел?Дык даже когда среди деревьев хожу виснет.



    granizaДата: Четверг, 24 Июля 2014, 12:35 | Сообщение # 6336
    GraNiza-DeveLoper
    Сейчас нет на сайте
    Цитата Fr0sT ()
    Народ!Сделал уровень одной моделью,а деревья и камни раскидал уже в редакторе.Виснет,когда смотрю даже издалека на это все,когда отворачиваюсь,не виснет,на камере прорисовку не такую далекую даже поставил.Чего сделать?Скриптом отключать видимость объектор если далеко отошел?Дык даже когда среди деревьев хожу виснет.

    Может полигонов куча?


    Fr0sTДата: Четверг, 24 Июля 2014, 14:05 | Сообщение # 6337
    постоянный участник
    Сейчас нет на сайте
    graniza, Не полигонов не куча,модельки простые но их много,прочитал что нужно использовать CombineChildren,но у меня его в юнити нет.Сейчас ищу.

    Добавлено (24.07.2014, 14:05)
    ---------------------------------------------
    Написал скрипт,который ищет объекты по тегам и скрывает их как только я отошел от них достаточно далеко.Draw calls уменьшилось,но еще не достаточно хорошо идет.




    LaushДата: Четверг, 24 Июля 2014, 18:59 | Сообщение # 6338
    почти ветеран
    Сейчас нет на сайте
    Ребята, что то я давно разработкой игр не занимался. Подзабыл юньку малех...
    Как скриптом ограничить/отключить движения персонажа по оси "Z" ?


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    Fr0sTДата: Четверг, 24 Июля 2014, 20:08 | Сообщение # 6339
    постоянный участник
    Сейчас нет на сайте
    Laush, Ну если ригидбади есть,то в настройках самого ригидбади можно ограничить.



    LaushДата: Четверг, 24 Июля 2014, 20:13 | Сообщение # 6340
    почти ветеран
    Сейчас нет на сайте
    Fr0sT, Это я хотел изначально сделать, но в этом случае применяются дополнительные свойства на объект, такие как гравитация к примеру. Нжно искать другое решение.

    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг