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)

Taugeshtu 11.12.2011 14:31

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

Теперь, если надо что-то сделать оптимизировано, то надо свой Plane рисовать.
Совсем обленились, им уже сложно один раз замоделить квад и кидать его во все проекты...

Lestar 11.12.2011 14:55

Ответ: Вопросы от новичка
 
http://www.unifycommunity.com/wiki/i...le=CreatePlane эдитор класс,позволяет создавать плейник на два триса с заданными параметрами.

pax 11.12.2011 15:07

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

Сообщение от Lestar (Сообщение 213512)
http://www.unifycommunity.com/wiki/i...le=CreatePlane эдитор класс,позволяет создавать плейник на два триса с заданными параметрами.

Блин! А давно можно в ассетах меши создавать просто так? Я сижу мучаюсь с экспортом в обж! Блииин спасибо за реф!

WISHMASTER35 11.12.2011 16:43

Ответ: Вопросы от новичка
 
Тут дело не в лене создать свою плейн или класс. Просто, когда это делается стандартными средствами, то получается универсальнее. Особенно, когда дело касается такой мелочи, то хочется найти решение в стандартных средствах, а не плодить свои меши\классы.
А с плейном еще было плохо то, что пока правильно экспортировал - замучался.

Скажите, в unity есть bsp деревья? Октри доступны только в pro версии?

pax 11.12.2011 17:31

Ответ: Вопросы от новичка
 
нету, как-то писал свой октри.
Вот даже картинки показывал )
http://forum.boolean.name/showthread.php?t=12803

Aikon 14.12.2011 01:49

Ответ: Вопросы от новичка
 
Встрял в неожиданном месте: подскажите когда OnCollisionEnter возникает?

Создал я значит кубики, повесил на них BoxCollider, создал шарики - на них то же BoxCollider. Шарики перемещаю плавно на кубики. На объекты повесил скрипты с обработкой OnCollisionEnter(). Сообщение не приходит ни к одному, хотя отнаследовался от MonoBehaviour.

Что не так то делаю? Если на оба объекта повесить Rigidbody, то событие начинает вызываться. В чем отличие Rigidbody от MeshCollider и в каких случаях, что надо использовать?

Lestar 14.12.2011 02:41

Ответ: Вопросы от новичка
 
Чтобы срабатывала OnCollisionEnter на одном из обьектов кроме коллайдера должен быть Regidbodi.

Aikon 14.12.2011 02:56

Ответ: Вопросы от новичка
 
Lestar, специально проверил: если на одном, то вызов не происходит ни для одного объекта.

Lestar 14.12.2011 03:01

Ответ: Вопросы от новичка
 
Note that collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached.

Специально проверил-происходит.

Aikon 15.12.2011 01:58

Ответ: Вопросы от новичка
 
Lestar, спасибо, буду смотреть, где накосячил.

Вопрос по редактору: объекты в нем переставляются с точность до 7-го или 8-го знака. Можно как то выставить, чтобы дельта таскания была скажем 0.1м?
P.S. Нашел, если зажать Ctrl то будет дискретно таскать, а где можно выставить величину?

Lestar 15.12.2011 02:38

Ответ: Вопросы от новичка
 
http://forum.boolean.name/showpost.p...&postcount=693

Aikon 15.12.2011 02:57

Ответ: Вопросы от новичка
 
Lestar, а как то можно ограничить перемещение, когда я вытаскиваю объект с Prefab?

Lestar 15.12.2011 03:21

Ответ: Вопросы от новичка
 
Не совсем понял как это. Если нужно поставить в конкретную точку, повторюсь еще раз - Антарес позволяет инстансить обьекты в эдиторе в точку клика.

Aikon 15.12.2011 03:52

Ответ: Вопросы от новичка
 
Lestar, хочется, чтобы я вытаскивал prefab на экран, а он передвигался скачками и более того мог быть размещен в координатах кратными например 0,5м. Ctrl при вытаскивании prefab не работает.

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

P.S Кто такой Антарес?

Lestar 15.12.2011 04:17

Ответ: Вопросы от новичка
 
http://forum.boolean.name/showpost.p...&postcount=697

Aikon 16.12.2011 00:02

Ответ: Вопросы от новичка
 
Спасибо, попробую потыкать.

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

pax 16.12.2011 00:18

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

PHP код:

public float angle;
Quaternion startRotation;
void Start()
{
   
startRotation transform.rotation;
}

void Start()
{
   
transform.rotation startRotation Quaternion.Euler(0,angle,0);



Aikon 16.12.2011 00:45

Ответ: Вопросы от новичка
 
Супер :) А то у меня какой то корявый код получался.

pie 16.12.2011 14:04

Ответ: Вопросы от новичка
 
Всем привет. У меня возник один вопрос. Как сделать проверку того что анимация все еще воспроизводится. То есть я стреляю и когда пули кончились идет анимация перезарядки. С помощью какого условия не давать начать стрелять раньше времени.

pax 16.12.2011 14:12

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

Lestar 16.12.2011 14:24

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

enum Recharge {YES,NO}
private 
Recharge rechargeState Recharge.NO;

void Update()
    {
        if (
Input.GetButton("R"))
        {
            
rechargeState Recharge.YES;
            
// проигрываем анимацию перезарядки,перезаряжаем
            
var time animation.clip.length;
            
Invoke("Default",time);
        }
        if (
rechargeState == Recharge.NO)
        {
            if (
Input.GetMouseButton(0))
            {
                
//стреляем
            
}
        }
    }
void Default()
    {
        
rechargeState Recharge.NO;
    } 


RegIon 16.12.2011 19:48

Ответ: Вопросы от новичка
 
Как можно в Unity на подобии лазерного прицела сделать...а то в нете не найти

WISHMASTER35 16.12.2011 19:50

Ответ: Вопросы от новичка
 
pax, и как можно написать свой октри на инди версии? Будет он уступать юнитивскому октри?
Видел презентацию 3.5, там показывали как определяется перекрытие объекта. В 3.4 такого не было?
И еще юнити сам определить какие объекты активные и какие надо обрабатывать? А то видел где-то было написано, что это вручную делается.
Костян, в angry bots это есть. LineRender'ом это делается.

pax 16.12.2011 20:06

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

Сообщение от Костян (Сообщение 214173)
Как можно в Unity на подобии лазерного прицела сделать...а то в нете не найти

LineRenderer

Цитата:

Сообщение от WISHMASTER35 (Сообщение 214174)
pax, и как можно написать свой октри на инди версии? Будет он уступать юнитивскому октри?

В Unity нет октри.

Цитата:

Сообщение от WISHMASTER35 (Сообщение 214174)
Видел презентацию 3.5, там показывали как определяется перекрытие объекта. В 3.4 такого не было?

Я не смотрел.

Цитата:

Сообщение от WISHMASTER35 (Сообщение 214174)
И еще юнити сам определить какие объекты активные и какие надо обрабатывать? А то видел где-то было написано, что это вручную делается.

Ты имеешь ввиду Occlusion Culling?

WISHMASTER35 16.12.2011 20:16

Ответ: Вопросы от новичка
 
Я думаю Occlusion Culling это и есть октри. Даже не знал, что кроме bsp и octree существует еще какой-то Occlusion Culling.

pax 16.12.2011 20:31

Ответ: Вопросы от новичка
 
Не, в Unity это не октри. Это заранее просчитанные данные, которые еще быстрее октри, но считать их надо заранее в редакторе.

WISHMASTER35 16.12.2011 23:20

Ответ: Вопросы от новичка
 
Хм. Всегда думал, что и октри заранее просчитываются.
А как дела обстоят с определением активных объектов? Или же это надо самому делать?

pax 17.12.2011 00:09

Ответ: Вопросы от новичка
 
Да ни о чем особо думать не надо, если конечно у тебя не предвидится высокодетализированные уровни на миллион полигонов. Старайся делать так, чтобы было меньше дравколов и все. В Unity 3.5 будут еще и лоды.

WISHMASTER35 17.12.2011 01:10

Ответ: Вопросы от новичка
 
Да я не о полигонах. Если на уровни пару сотен ботов, то они все будут обрабатываться или юнити определит каких ботов не надо обрабатывать?
Для ботов же еще и физика и логика считается, а не толька дравкол.

pax 17.12.2011 01:27

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

WISHMASTER35 17.12.2011 02:46

Ответ: Вопросы от новичка
 
Плохо. Это что же тогда получается, что каждый кадр надо проверять ВСЕ объекты сцены и включать\выключать их, если они близка\далеко от камеры? А если тысячи ботов на уровне? Бредово получается. Скорость будет зависеть от количества ботов.
А как тогда отключить объект? Если GameObject отключить, то потеряешь к нему доступ. Можно попробовать отключить все скрипты, если там можно получить список скриптов.
Или может лучше создать скрипт GameManager и в нем хранить всех ботов, что бы уже не проверять все подряд объекты.
Вообще очень странно, что это не реализовано(
Кстате, никто не знает как это в angry bots реализовано?

Lestar 17.12.2011 03:06

Ответ: Вопросы от новичка
 
Повесить на ГГ или камеру триггер и им включать/отключать ботов.

WISHMASTER35 17.12.2011 03:11

Ответ: Вопросы от новичка
 
Lestar, все равно чем больше ботов на уровне, тем медленнее. Даже, если боты не видны и черт знает где. Как-то не нравится мне это. девелопить собираюсь для мобил, так, что лучше уж буду проверять расстояние до главной камеры. А как-то можно получить список всех GameObject'ов даже, если они отключены?

Aikon 17.12.2011 04:17

Ответ: Вопросы от новичка
 
А есть ли в Unity простой способ сделать светящуюся обводку объектов?
В Blitz3D нашел, но там муторные варианты.

Lestar 17.12.2011 05:00

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

Сообщение от WISHMASTER35 (Сообщение 214237)
А как-то можно получить список всех GameObject'ов даже, если они отключены?

FindObjectsOfType
P.S.Тысячи ботов для мобильной платформы это что то новое. Перед тем как утверждать, стоит проверить насколько будет множество Vector3.Distance() быстрее одной пары OnTriggerEnter + OnTriggerExit. Лично я не проверял.

pax 17.12.2011 11:28

Триггеры будут рассчитываться физикой, а у физики есть свои реализации октри или чего другого типа BSP деревьев.

По поводу поиска отключенных объектов, чтобы их найти - на них надо ссылки сохранять. Сделать где-то статический список, в который записывать отключаемые и исключать включенные.

Сейчас уже есть двухядерные мобильные девайсы, а скоро появятся и четырехядерные. Так что можно расчеты расстояний переложить на другой поток если что.

Цитата:

Сообщение от Aikon (Сообщение 214241)
А есть ли в Unity простой способ сделать светящуюся обводку объектов?
В Blitz3D нашел, но там муторные варианты.

Можно поискать вот тут

Lestar 17.12.2011 15:29

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

Сообщение от pax (Сообщение 214250)
Сейчас уже есть двухядерные мобильные девайсы, а скоро появятся и четырехядерные. Так что можно расчеты расстояний переложить на другой поток если что.

Ориентировать приложение на этот сегмент рынка еще рано. Он минимален.

WISHMASTER35 17.12.2011 16:39

Ответ: Вопросы от новичка
 
Я пока буду ориентировать на свой старенький xperia x10.
Цитата:

Триггеры будут рассчитываться физикой, а у физики есть свои реализации октри или чего другого типа BSP деревьев.
А для динамических объектов это будет работать? Кстати, как тогда сделать, что бы с триггер бота проверялся на коллизию только с триггером камеры?

RegIon 17.12.2011 16:39

Ответ: Вопросы от новичка
 
http://uregion.ucoz.ru/fpstest/WebPlayer.html вот как сделать нормальный целеуказатель,как развернуть Плайн с текстурой в зависимости от нормали(RayCasthit.normal)?
ПЕРЕЗАЛИЛ

pax 17.12.2011 21:56

Ответ: Вопросы от новичка
 
Вот тебе пример луча, прицепи пустой объект к прицелу, вперед направь ось Z этого объекта.

PHP код:

using UnityEngine;

[
RequireComponent(typeof(LineRenderer))]
public class 
InfraRedRay MonoBehaviour
{
    
void Update()
    {
        var 
lr = (LineRendererrenderer;

        
RaycastHit hit;
        
lr.SetVertexCount(2);
        
lr.SetPosition(0transform.position);
        if(
Physics.Raycast(new Ray(transform.positiontransform.forward), out hit))
        {
            
lr.SetPosition(1transform.position transform.forward hit.distance);
        }
        else
        {
            
lr.SetPosition(1transform.position transform.forward*1000);
        }

    }



RegIon 18.12.2011 11:57

Ответ: Вопросы от новичка
 
не...мне и так пойдёт...мне не нужен полный луч...скажите как повернуть плоскость точечек от лазера на объекте по их нормалям...и как сделать чтоб не дрыгалась точка пицела

pax 18.12.2011 12:23

Ответ: Вопросы от новичка
 
Чтобы не дергалась - поместить расчет положения с рейкастом в LateUpdate. А по нормали - присвой значение нормали одному из векторов трансформа, например transform.up = hit.normal

pie 18.12.2011 18:21

Ответ: Вопросы от новичка
 
Вложений: 2
Пытаюсь сделать вылетающую гильзу. В объекте оружия создаю две точки:
1 - откуда будут вылетать гильзы;
2 - откуда будет действовать выталкивающая сила на них.

Вот кусок кода.

Код:

var gilzCreate : Transform;
var gilzForce : Transform;
private var gilz : GameObject;
private var glrig : Rigidbody;

Код:

function GilzCreating () {
gilz = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
gilz.transform.localScale = Vector3(0.02, 0.02, 0.02);
gilz.transform.position = gilzCreate.position;
glrig = gilz.AddComponent(Rigidbody);
glrig.collider.enabled = false;
glrig.AddForceAtPosition(gilzForce.position, gilzCreate.position, 3);
}

Там где выделенно красным я пытался вводить и таким образом: .localPosition. Проблема в том что начало силы действующей на гильзу привязанна к глобальной координате. Если отойти чуть севее то гильзы вылетают в левую сторону (скрин 1), если чуть правее то в право (скрин 2). Вот такая проблема. Сила привязывается к глобальной переменной, а нужно к локальной.

pax 18.12.2011 18:29

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

glrig.AddForceAtPosition(gilzForce.position gilzCreate.position); 


RegIon 18.12.2011 18:31

Ответ: Вопросы от новичка
 
так пересчитай ЛОКАЛЬНУЮ в глобальную позицию....

RegIon 18.12.2011 18:32

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

Сообщение от pax (Сообщение 214466)
Попробуй так:
PHP код:

glrig.AddForceAtPosition(gilzForce.position gilzCreate.position); 


ну блиииигн

pie 18.12.2011 18:35

Ответ: Вопросы от новичка
 
Ты имеешь ввиду вот так?

Код:

glrig.AddForceAtPosition(gilzForce.position - gilzCreate.position, gilzCreate.position, 3);
Но зачем? Их позиции и так не совпадают. Сделал так - не заработало. Кроме того гильзы просто вниз начали падать)))

pie 18.12.2011 18:35

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

Сообщение от Костян (Сообщение 214467)
так пересчитай ЛОКАЛЬНУЮ в глобальную позицию....

Объясни как.

RegIon 18.12.2011 18:42

Ответ: Вопросы от новичка
 
ну как...я думаю если объект спаунится в какой-то точке относительно другого,то как тебе,точка силы+точка объекта...
или точка спауна+ точка объекта....
__________________________________
пример: я стою,у меня есть рогатка.Я натянул резинку ... рука тянущая в какой-то точке оказалась...если я буду перемещатся, а рука которая тянет останется В ТОЙ ЖЕ глобальной точке-вектор направления после отпускания изменится.
Вывод-перемещение руки вместе с телом...

Цитата:

Сообщение от Костян (Сообщение 214297)
http://uregion.ucoz.ru/fpstest/WebPlayer.html вот как сделать нормальный целеуказатель,как развернуть Плайн с текстурой в зависимости от нормали(RayCasthit.normal)?
ПЕРЕЗАЛИЛ

переделал...

pax 18.12.2011 19:10

Ответ: Вопросы от новичка
 
Сорри, я забыл метод переименовать
PHP код:

glrig.AddForce(gilzForce.position gilzCreate.position); 


pie 19.12.2011 01:43

Ответ: Вопросы от новичка
 
Не помогло(((

pax 19.12.2011 07:47

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

RegIon 19.12.2011 10:25

Ответ: Вопросы от новичка
 
на яве писать---ууу>>:(

Aikon 19.12.2011 23:57

Ответ: Вопросы от новичка
 
Какой то глюк с коллизиями:

Был кубик с Rigid Body + Box Collider, который падал на платформу с Mesh Collider. И вот в один прекрасный момент сообщения OnCollisionEnter/Stay/Exit перестают генерироваться для скрипта, висящего на платформе. Если на платформу повесить Rigidbody, то все начинает приходить.

Что происходит, идеи будут?

Unity 3.4.2f3

WISHMASTER35 20.12.2011 00:02

Ответ: Вопросы от новичка
 
Aikon, замечал такую фигню. Я из-за этого не смог определить стоит объект на полу или нет. Только это наверно не баг, а оптимизация. Хорошо бы было, если объекты не сдвинулись с места, то проверка коллизии не вызывается. Так и не понял как сделать проверку стоит объект на полу или нет)

pax 20.12.2011 00:18

Ответ: Вопросы от новичка
 
Попробуйте использовать http://unity3d.com/support/documenta...dy.WakeUp.html

RegIon 20.12.2011 00:36

Ответ: Вопросы от новичка
 
Как включить-отключить скрипт через GetComponent??можно?(просто блюр на камере отключать нужно)
Как сделать захват ригбоди типа как в Халфлайф (может есть у кого? ночью думать-лень...подумаю утром сам)

pax 20.12.2011 00:38

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

Сообщение от Костян (Сообщение 214642)
Как включить-отключить скрипт через GetComponent??можно?(просто блюр на камере отключать нужно)
)

а GetComponent().enabled = false не работает?

RegIon 20.12.2011 00:46

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

а GetComponent().enabled = false не работает?
в том-то и дело что нет...

Aikon 20.12.2011 01:12

Ответ: Вопросы от новичка
 
pax, добавил кубикам компонент, вызывающий WakeUp для Rigidbody.
Не помогло :(

Костян, вот так должно все работать
Код:

GameObject go;
MeshRendered mr = go.GetComponent<MeshRendered>();
if (mr != null)
    mr.enabled = false;

Если у тебя не работает, то скорее всего компонент не нашелся. Ты лог то смотришь?

pax 20.12.2011 01:14

Ответ: Вопросы от новичка
 
а где вызывает? в FixedUpdate?

Aikon 20.12.2011 01:21

Ответ: Вопросы от новичка
 
Нет, в Awake, как в справке. Попробовал в FixedUpdate - результат тот же.

pax 20.12.2011 01:33

Ответ: Вопросы от новичка
 
попробуй на всякий в обычном Update, вдруг Fixed тоже перестает вызываться при слипе

RegIon 20.12.2011 01:33

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

Сообщение от Aikon (Сообщение 214647)
pax, добавил кубикам компонент, вызывающий WakeUp для Rigidbody.
Не помогло :(

Костян, вот так должно все работать
Код:

GameObject go;
MeshRendered mr = go.GetComponent<MeshRendered>();
if (mr != null)
    mr.enabled = false;

Если у тебя не работает, то скорее всего компонент не нашелся. Ты лог то смотришь?

отключить рендер можно и проще :go.render.enable=false;
у меня такое дело, ессть камера,на ней скрипт из пака с эфектами для имаг,imageBlure называется,вот только вызывать мне его надо раз всего...когда меню включается..а когда выключается - скидывать


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

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