Физика: коллайдеры отстают от трансформа

Физика в Unity

Физика: коллайдеры отстают от трансформа

Сообщение Multirezonator 13 май 2010, 15:25

Заметив это явление впервые я думал что сделал ошибку .. однако нет(к сожалению :-s )
Когда задаю новое положение объекта с коллайдером (transform.position=new Vector3(0f, 0f, 50f)) - коллайдер прибывает в эту точку через некоторый промежуток времени, так что если проверять с помошью Physics.Raycast - его еще нет на объекте. Вот пример:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class  TestCollider : MonoBehaviour {
        GameObject go;
        string text="";

        void Start () {
                go=new GameObject("TestCollider");
                BoxCollider coliider=go.AddComponent<BoxCollider>();
                go.transform.position=new Vector3(0f, 50f, 0f);
        }
       
        void OnGUI () {
                if(GUILayout.Button("try")) {
                        StartCoroutine(testPhisics());
                }
                if(GUILayout.Button("back")) {
                        testBack();
                }
                GUILayout.Label(text);
        }

        private IEnumerator testPhisics() {
                go.transform.position=new Vector3(0f, 0f, 50f);
                RaycastHit hit;
                int count=0;
                while(!Physics.Raycast(Vector3.zero, Vector3.forward, out hit, 100f) && (count<100)) {
                        count++;
                        yield return new WaitForSeconds(0.000001f);
                }
                text="Raycast is not find Collider "+count+" times";
                print(text);           
        }

        private void testBack() {
                go.transform.position=new Vector3(0f, 50f, 0f);
        }
}
 


можно ли как-то заставить физику пересчитать позиции коллайдеров в заданном месте скрипта??
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Физика: коллайдеры отстают от трансформа

Сообщение Mr_Anderson 13 май 2010, 15:51

Ничего удивительного: "...Physics simulation is carried out in discrete timesteps. The FixedUpdate function is called immediately before each step.". Синхронизируйте перемещения объектов в FixedUpdate(), так как у физики свой таймер.
Mr_Anderson
UNIт
 
Сообщения: 143
Зарегистрирован: 16 апр 2009, 13:32

Re: Физика: коллайдеры отстают от трансформа

Сообщение Multirezonator 13 май 2010, 15:59

Мне бы принудительно обновить коллайдеры или конкретный коллайдер, а не ждать следующего кадра, может кто знает как это сделать?
Мне их много раз нужно перемешать в одном кадре и после каждого перемещения тестировать, вот!
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Физика: коллайдеры отстают от трансформа

Сообщение gnoblin 13 май 2010, 16:12

Лучик просто пускай в FixedUpdate ;)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Физика: коллайдеры отстают от трансформа

Сообщение Multirezonator 13 май 2010, 16:17

Мне FixedUpdate не подходит. Коллайдеры я двигаю в одном кадре много раз (для просчета действий ИИ в пошаговой стратегии), и еще больше раз я проверяю где препятствия. Если я буду каждый новый лучик пускать в новом кадре - то мой ИИ будет "тормоз".
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Физика: коллайдеры отстают от трансформа

Сообщение Zaicheg 13 май 2010, 17:41

Multirezonator писал(а):Мне FixedUpdate не подходит. Коллайдеры я двигаю в одном кадре много раз (для просчета действий ИИ в пошаговой стратегии), и еще больше раз я проверяю где препятствия. Если я буду каждый новый лучик пускать в новом кадре - то мой ИИ будет "тормоз".

Вы не понимаете следующего: любая физическая хрень не может считаться чаще, чем происходит FixedUpdate. Разносите ИИ и физику, вводите какие-нибудь интерполяции редко получаемых результатов, уменьшайте интервал между FixedUpdate.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Физика: коллайдеры отстают от трансформа

Сообщение Multirezonator 13 май 2010, 18:12

А мне физика и не нужна, мне просто нужно определить есть ли препятствие в заданной точке или нет, я думал делать это с помощью коллайдеров, теперь вот нужно искать другие решения :(
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт


Вернуться в PhysX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2