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)

seaman 29.01.2013 23:53

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

стандартная анимация в Character Controller не работает
Это не понятно.
А на вопрос Вы не ответили - зачем в while? Один раз запустить анимацию - и пусть она сама воспроизводится.

pax 30.01.2013 00:02

Ответ: Вопросы от новичка
 
вместо while - if

Okay 30.01.2013 00:04

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

Сообщение от seaman (Сообщение 251112)
Это не понятно.
А на вопрос Вы не ответили - зачем в while? Один раз запустить анимацию - и пусть она сама воспроизводится.

У меня в Юнити в скрипте не работает анимация. То есть если повесить на объект скрипт Character Controller и закинуть анимации в инспекторе, то они работать не будут. Если запустить один раз при прыжке, то есть баг: Допустим анимация длится 5 секунд, а я за 3 секунды запрыгнул на объект, то при следующем прыжке анимация прыжка воспроизводится не будет. Поэтому нужно сделать проверку на "На граунде игрок или нет", чтобы она воспроизводилась постоянно

Okay 30.01.2013 00:10

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

        if(Input.GetKey(KeyCode.Space))
        {
                if(!controller.isGrounded)
                {       
                        animation.CrossFade("jump");       
                }
              }

Сделал вот так. Тестил минуты 2-3. Багов не наблюдаю с воспроизведением анимации

Левша09 30.01.2013 09:55

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

Сообщение от seaman (Сообщение 251102)
А никто вроде про сайт не спрашивал. Спрашивали про выкладывание веб сборок.
Имхо: Если просто показать - лучше всего дропбокс. Если для распространения - или AssetStore, или Kongregate или свой выделенный/виртуальный сервер.

А смотря что подразумевается под "показать", я имел в виду показать в браузере, чтобы не отправлять полный билд коллегам.
Я может не понимаю механизма. Если даю ссыль на unity файл, то у некоторых открывается нормально. А вот ссыль на html не работает.
Посмотрел на юнити.ру, там размещают юнити файл лежащий на дропбоксе, но насколько я понял у них веб плеер к сайту прикручен.

mauNgerS 30.01.2013 11:52

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

PHP код:

public class Zipper MonoBehaviour {
    public 
Box box;
    public 
Vector3 groundPoint;
    
    
void Awake () {
        
box GetComponent<Box>();
    }
    
    
void Update () {
        print (
box.boxswith);
    }


Нужно обратится к скрипту Box и получить из него переменную boxswith

Первый скрипт висит на одном объекте, второй на другом

Проблема в том что оба объекта загружаются по ходу выполнения программы и клонов объектов много. Объекты со скриптом Box это цели, а с другим скриптом пули.

Код который приведен выше даёт NullReferenceException: Object reference not set to an instance of an object
Zipper.Update () (at Assets/Scripts/Zipper.cs:40) на эту строчку print (box.boxswith);

Как вообще реализовать общение скриптов, когда много клонов объектов?

Lestar 30.01.2013 12:08

Ответ: Вопросы от новичка
 
Если пули, через коллизию. Если в общем, по какому либо атрибуту, например по имени. Стрелять физическими пулями решение с огромным количеством проблем.

mauNgerS 30.01.2013 12:41

Ответ: Вопросы от новичка
 
Объекты по которым стреляю у меня статичны, я могу найти по позиции.

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

pax 30.01.2013 12:46

Ответ: Вопросы от новичка
 
не должен, т.к. GetComponent получает скрипт с текущего объекта

mauNgerS 30.01.2013 12:54

Ответ: Вопросы от новичка
 
Т.е. по ходу выполнения программы он пробегает по всем объектам, а доступ я получаю к скрипту объекта который был последним?

Как тогда выбрать нужные мне скрипт, ведь объекты отличаются только содержимым переменных в скрипте (жизнь, позиция). Или при создании объекта давать разные имена (ололо1, ололо2 ... и т.д.)

Тогда как выбрать объект по имени? (помогите кодом)

pax 30.01.2013 13:06

Ответ: Вопросы от новичка
 
Нет, скрипт Zipper принадлежит конкретному объекту, и GetComponent получает скрипты с этого объекта. По имени искать GemeObject.Find(), но может тебе что-то проще подойдет? Опиши задачу более подробно.

mauNgerS 30.01.2013 13:25

Ответ: Вопросы от новичка
 
Задача такая:
Объект Box на нём скрипт Box - это заранее сделанный префаб, клоны которого расставляются по карте
GameObject inst = (GameObject)Instantiate(Resources.Load("Prefabs/Box", typeof(GameObject)));

Затем игрок стреляет по этим клонам. При выстреле создаётся клон другого префаба
GameObject inst = (GameObject)Instantiate(Resources.Load("Prefabs/Particles/Zipper", typeof(GameObject)));

На объекте Zipper весит скрипт Zipper. При попадании в объект Box у Box отнимается жизнь (если ноль то удаляется) а объект Zipper удаляется.

Объектов Box много и объектов Zipper много.

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

Когда я делал жизнь как static всё работало, только жизнь была одна на все Box...

pax 30.01.2013 14:01

Ответ: Вопросы от новичка
 
Короче задача в момент выстрела или в момент попадания определить в какой Box попал. Попробуй почитать мой тутор про змейку. Там есть поедание еды через столкновение. Я думаю тебе похожий способ подойдет. Если определить можно в момент выстрела, то здесь поможет Raycast.

Lestar 30.01.2013 14:03

Ответ: Вопросы от новичка
 
Стрельни лучем, если игрок попал по цели, определяй время через которое пуля должна войти в цель, дальше два направления или через эту дельту времени инстансь пулю в точке, куда ты попал и через коллизию с целью вызывай логику или пускай пулю и с задержкой дельта вызывай на ней логику. Не знаю насколько динамичная у тебя сцена, и нужна ли видимость полета пули.

Up. Pax за тобой не успеешь))

Morganolla 30.01.2013 14:26

Ответ: Вопросы от новичка
 
рах
попробовал применить
audio.PlayClipAtPoint(clip, new Vector3(5, 1, 2));
выдается ошибка -
Assets/aScripts/sAnimator.cs(269,23): error CS0176: Static member `UnityEngine.AudioSource.PlayClipAtPoint(UnityEngi ne.AudioClip, UnityEngine.Vector3)' cannot be accessed with an instance reference, qualify it with a type name instead

В чем дело?


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

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