forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

pax 21.01.2011 20:39

Ответ: Фак по Юнити.
 
Частицы быстрее, если тебе надо сотню и больше билбоардов. Управляй созданием частиц в ручную в эмиттере, и сможешь отрисовать все частицы за один draw call.

Evgen 21.01.2011 21:30

Ответ: Фак по Юнити.
 
Использую particle emitter, со скоростью все Ок! 16000 партиклов 150FPS. :)

А как через код установить текстуру particleEmitter?
И почему я создаю желтый партикл Color.yellow, а на экране отображается розовый?

П.С. Если кому интересно небольшой рабочий тест.
дополнительно к объекту нужно прикрутить Particle Renderer и Elipsoid Particle Emitter

Код:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {

        // Use this for initialization
        void Start () {
                particleEmitter.useWorldSpace = true;
        }
       
        // Update is called once per frame
        void Update () {
                float x,y,z;
                for(int i=0; i<50; i++){       
                        x=Random.Range(50, 1024-50);
                        y=Random.Range(-10, 50);
                        z=Random.Range(50, 1024-50);
                        particleEmitter.Emit(new Vector3(x,y,z), Vector3.up, 3.0f, 2f, Color.yellow);
                }       
                print(particleEmitter.particleCount);
        }
       
}


pax 21.01.2011 21:35

Ответ: Фак по Юнити.
 
Используй явное создание частиц
http://unity3d.com/support/documenta...particles.html
а материал определяет ParticleRenderer

Evgen 21.01.2011 21:53

Ответ: Фак по Юнити.
 
Забыл что к камере прикрутил, Particle Renderer и Elipsoid Particle Emitter. в свойствах Render можно поставить материал.

Теперь все работает.

Nuprahtor 25.01.2011 20:03

Ответ: Фак по Юнити.
 
Возникла нехорошая проблема.
Персонаж игрока условно - куб с Box Collider`ом. Враги тоже.
Их я двигаю transform.Translate`ом и они не реагируют на столкновения вообще никак.
У меня возникло подозрение, что transform.Translate не учитывает физику, и мне стало от этого грустно.
Какой командой стоит передвигать персонажей, или какие компоненты стоит добавить (пробовал Rigidbody, однако безрезультатно)

pax 25.01.2011 21:12

Ответ: Фак по Юнити.
 
Если все объекты с коллайдерами и двигаются, то им необходимо добавить RigidBody и его переключить в режим IsKinematic и передвигать их надо в FixedUpdate.

Nuprahtor 25.01.2011 21:27

Ответ: Фак по Юнити.
 
Хм, не помогло, ригидбади установлены, пробовал со всеми комбинациями галочек...

pax 25.01.2011 21:35

Ответ: Фак по Юнити.
 
Коллайдеры случаем не в режиме IsTrigger? В каком слое коллайдеры находятся? В настройках физики - эти слои между собой могут сталкиваться?

Nuprahtor 25.01.2011 21:37

Ответ: Фак по Юнити.
 
Могут сталкиваться, коллайдеры не триггеры

pax 25.01.2011 21:38

Ответ: Фак по Юнити.
 
Тогда не могу предполагаать... если только transform который двигает объект не на том же объекте что и коллайдер...

Nuprahtor 25.01.2011 21:45

Ответ: Фак по Юнити.
 
Вложений: 1
Нет, трансформ там же находится
Вот сцена, если есть возможность посмотреть

pax 25.01.2011 21:58

Ответ: Фак по Юнити.
 
Посмотрел, похоже чтобы сталкивались наверное надо двигать объекты физикой. Либо использовать вместо BoxCollider - CharacterController. Либо вручную обрабатывать события он CollisionEnter.

Taugeshtu 17.02.2011 15:29

Ответ: Фак по Юнити.
 
Цитата:

Возникла нехорошая проблема.
Персонаж игрока условно - куб с Box Collider`ом. Враги тоже.
Их я двигаю transform.Translate`ом и они не реагируют на столкновения вообще никак.
У меня возникло подозрение, что transform.Translate не учитывает физику, и мне стало от этого грустно.
Какой командой стоит передвигать персонажей, или какие компоненты стоит добавить (пробовал Rigidbody, однако безрезультатно)
боролся кстати с этим недавно... решение получилось костыльным)
Rigidbody, в Update() включать IsKinematic, двигать transform.position как хочется, выключать IsKinematic, обнулять rigidbody.velocity и angularVelocity.

Andvrok 01.03.2011 22:08

Ответ: Фак по Юнити.
 
Код:

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public GameObject respawnPrefab;
    public GameObject[] respawns = GameObject.FindGameObjectsWithTag("Respawn");
    void Awake() {
        foreach (GameObject respawn in respawns) {
            Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
        }
    }
}

Запускаю, но в массиве пусто :(
Префаб назначен, скрипт в сцене размещен, точки респавна присутствуют, все теги выставлены.

И второй вопрос: как сделать триггер на партиклы? Например, стоишь в огне и у тебя здоровье отнимается.

pax 02.03.2011 01:48

Ответ: Фак по Юнити.
 
делай так
Код:

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    public GameObject respawnPrefab;
    public GameObject[] respawns;
    void Awake() {
        respawns = GameObject.FindGameObjectsWithTag("Respawn");
        foreach (GameObject respawn in respawns) {
            Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
        }
    }
}

по второму вопросу - используй MonoBehaviour.OnTriggerStay


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

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