|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
11.01.2013, 19:00
|
#976
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
Не знаю насчет джойнтов. Но для того чтобы не дергалось можно уменьшить Fixed TimeStep (осторожнее чтобы не тормозило). Изменить в RigidBody - Inrerpolate/Extrapolate.
только если в Update просто изменять позицию предмета, но о коллизии тогда речи нету
|
Я тут когда делал арканоид понял, что ну не получается у меня сделать нормальное отбитие шарика битой с использованием физики. Как ни уменьшаешь Fixed TimeStep - иногда шарик отбивается не верхом биты, а серединой, или даже низом. Именно из-за прерывности расчета физики. (Может, конечно, у меня руки кривые, но - увы). Поэтому я сделал атк.
Двигаю шарик не физикой, а изменением позиции. Коллизии рассчитываю пуская вперед по движению шарика луч (Physx Raycast) на расстояние, определяемое скоростью шарика. Это делается каждый кадр - следовательно нет глюков, вызываемых дискретностью расчета физики.
В арканоиде это вполне нормально прошло. В большой игре нужно проверять не начнет и тормозить.
|
(Offline)
|
|
11.01.2013, 20:26
|
#977
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
о для того чтобы не дергалось можно уменьшить Fixed TimeStep
|
Уменьшать Fixed TimeStep это всегда не выход.
Коллизии рассчитываю пуская вперед по движению шарика луч (Physx Raycast) на расстояние, определяемое скоростью шарика
|
А Continuous Collision Detection не лучше было бы?
Не знаю физикой или нет двигается объект в Амнезии, но при коллизии он довольно хорошо себя ведет.
|
(Offline)
|
|
11.01.2013, 20:44
|
#978
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
А Continuous Collision Detection не лучше было бы?
|
Я все перепробовал и Continuous и Continuous Dynamic. Говорю - или у меня руки кривые, или... Но мячик все-равно иногда отбивается не верхом биты. Кстати очень хорошо видна дискретность, если у камеры сделать ClearFlag - Don'tClear. Тогда на изображении остаются следы от мяча. Видно, что они дискретны, особенно если двигать физикой..
|
(Offline)
|
|
11.01.2013, 20:50
|
#979
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
seaman, если уменьшить timeScale, то тоже хорошо видно дискретность)
|
(Offline)
|
|
11.01.2013, 21:11
|
#980
|
Знающий
Регистрация: 08.01.2013
Адрес: Самара
Сообщений: 284
Написано 104 полезных сообщений (для 180 пользователей)
|
Ответ: Вопросы от новичка
Я к чему вообще все это писал? К тому, что можно двигать вручную и обрабатывать коллизии. Во всяком случае у простых форм точно.
|
(Offline)
|
|
11.01.2013, 23:16
|
#981
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Снял маленькое видео http://www.youtube.com/watch?v=Mke9F...ature=youtu.be правда темно получилось.
seaman, вручную так коллизию не обработать. Как видно объекты при коллизии даже вращаются.
А Continuous Dynamic действительно сильно не спасает. Делаю такую жесткую привязку к курсору body.MovePosition( GetTarget() ); но предмет все равно проходит сквозь объекты.
Последний раз редактировалось WISHMASTER35, 12.01.2013 в 01:07.
|
(Offline)
|
|
12.01.2013, 01:06
|
#982
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
«Newton» больше акцентирован на физическую точность моделирования, чем на скорость.
Теперь я действительно подумываю, что на PhysX такое не сделаешь.
В Амнезии, кстати, Character реалистично толкает физические объекты. PhysX CharacterController это просто не может сделать.
|
(Offline)
|
|
12.01.2013, 14:26
|
#983
|
Оператор ЭВМ
Регистрация: 11.01.2013
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы от новичка
Всем здравствуйте. Хочу написать скрипт чтобы плеер стукаясь о препятствие получал урон. Написал скрипт для урона, все работает.Осталось одна проблема, уже второй день рою интернет в поисках примера для скрипта проверки коллизии, нарыл 2 функции OnTriggerEnter , OnCollisionEnter. И вот не получается задействовать их, уже не питаю надежд разобраться своими силами, прошу помощи или ссылок на понятные примеры использования этих функций.
Вот сам код:
using UnityEngine;
using System.Collections;
public class colision_of_player : MonoBehaviour {
public GameObject target;
public int prover;
void OnCollisionEnter(Collision collision1) {
if(collision1.gameObject.tag == "Player")
{
player_health eh=(player_health)target.GetComponent("player_health");
eh.defuzhels(-10);
}
}
}
|
(Offline)
|
|
12.01.2013, 14:48
|
#984
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Если ты используешь CharacterController, то тебе надо использовать http://docs.unity3d.com/Documentatio...lliderHit.html
Я тут когда-то писал урок про змейку. Там есть обработка столкновений с едой.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.01.2013, 15:27
|
#985
|
Оператор ЭВМ
Регистрация: 11.01.2013
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы от новичка
Спасибо за ответ.Я попытался переписать с функцией OnControllerColliderHit, но как-то получилось неважно, + я добавил задержку, чтобы когда осуществляется столкновение то жизни не исчезли моментально .
с этими дополнениями ничего не изменилось, он не реагирует на столкновение никак.
вод код:
using UnityEngine;
using System.Collections;
public class colision_of_player : MonoBehaviour {
public GameObject target;
public float time;
public float maxtime;
public int prover;
private bool n;
//public Collision myCollision;
// Use this for initialization
void Start () {
maxtime=2.0f;
time=maxtime;
}
// Update is called once per frame
void Update ()
{
if (time > 0){time-=Time.deltaTime;}
if (time < 0){time=0;}
if (time ==0){time=maxtime;n=true;}
else{n=false;}
}
public void OnControllerColliderHit(ControllerColliderHit hit) {
if(hit.collider.gameObject.tag == "Ships" & n){
player_health eh=(player_health)target.GetComponent("player_health");
eh.defuzhels(-10);
}
}
}
|
(Offline)
|
|
12.01.2013, 15:44
|
#986
|
Оператор ЭВМ
Регистрация: 11.01.2013
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы от новичка
ураа, разобрался с коллизий, спасибо ещё раз за подсказку.
|
(Offline)
|
|
12.01.2013, 17:00
|
#987
|
Оператор ЭВМ
Регистрация: 11.01.2013
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы от новичка
У меня ещё один вопрос, как копировать вектор движения предмета?
|
(Offline)
|
|
12.01.2013, 18:36
|
#988
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
А можно точнее вопрос поставить?
|
(Offline)
|
|
12.01.2013, 20:51
|
#989
|
Оператор ЭВМ
Регистрация: 11.01.2013
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы от новичка
Поточнее можно. мне нужно сделать так чтобы плеер вставая на движущийся блок, как на пол, двигался вместе с ним, для этого я проверяю с начало коллизию плеера с этим движущимся блоком, и при её осуществлении должен двигать плеера так же как и движется блок. И пока я не знаю как осуществить это движение.Я предполагал что можно сделать с помощью вектора, скопировав его с блока и применив это движение на плеера.
|
(Offline)
|
|
12.01.2013, 21:26
|
#990
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
В стандартном примере платформера было такое решение http://u3d.as/content/unity-technolo...r-tutorial/3yF
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:58.
|