баллистика полет стрелы

Физика в Unity

Re: баллистика полет стрелы

Сообщение Paul Siberdt 22 фев 2010, 13:29

Ну... скрипт там вообще не нужен был... я им просто по-корявому имитировал импульс выстрела.
Вы же стрелу запускаете своими способом.

Да, добавить стреле невидимый тормозящий объект - решение гораздо лучше, чем разбивать стрелу на части :-bd

Чтоб как буйки не стояли - надо вернуть центр масс ближе к центру стрелы. А чтоб втыкались... вам, думаю, нужен на геометрии уровня меш коллайдер, а коллайдеры стрел сделайте триггерами. В момент, когда триггер стрелы ловит столкновение, превращайте стрелу в кинетическую - она замрет на месте.
Можно похитрее поступить и добавить триггер наконечнику, причем, оставив коллайдер стрелы. Причем, если триггер наконечника будет спрятан в объеме коллайдера стрелы, срабатывать он будет (стрела воткнется) лишь на большой скорости.
Можно к тому же трассировать поверхность в момент коллизии триггера, узнавать ее материал и учитывать его в поведении стрелы (от металла отскакивает, в землю втыкается).
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: баллистика полет стрелы

Сообщение Order 22 фев 2010, 16:38

Много интересных идей.. надо реализовать.

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

Сделаю мишень попробую в нее втыкать стрелы.
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: баллистика полет стрелы

Сообщение Paul Siberdt 22 фев 2010, 19:14

Задевать друг друга могут ригиды, если они утоплены друг в друга или стоят рядом. Чтоб избавится от этого - лучше уменьшить коллайдеры, оставив зазор пошире меж ними. Если у вас стрелы пользуют меш коллайдер - замените его на кубический - сильно облегчите математику, а визуально ничего не поменяется.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: баллистика полет стрелы

Сообщение Order 23 фев 2010, 12:01

как можно сделать чтобы стрелы застревали в подвижных мишенях и двигались с ними ?
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: баллистика полет стрелы

Сообщение gnoblin 23 фев 2010, 12:21

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

Re: баллистика полет стрелы

Сообщение Order 23 фев 2010, 14:48

gnoblin

можно поподробнее ?
у меня отскакивают стрелы
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: баллистика полет стрелы

Сообщение Order 23 фев 2010, 15:54

это в стреле нужно делать ?

или сделать отдельную стрелу со скриптом, ту что прилетела ударила , удалить и вызвать вторую и прицепить к цели ?
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: баллистика полет стрелы

Сообщение Paul Siberdt 23 фев 2010, 17:22

- при ударе отключаем физику флагом isKinetic = true
- привязываем стрелу к объекту, в чей коллайдер она ударилась:
myTransform.parent = myHit.collider.transform;

myTransform - это трансформ стрелы, и сам скрипт срабатывает в ней
myHit - это типа тот RaycastHit, который вы получаете с трассировки или коллизии с ригидом
Сама операция парентит стрелу к объекту, в который она воткнулась.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: баллистика полет стрелы

Сообщение Order 23 фев 2010, 19:27

Синтаксис:
Используется javascript
var timeOut = 10.0;
var myHit : RaycastHit;
var strela_go : Transform;

function Start () {
        rigidbody.centerOfMass = Vector3 (0, 0, 5);
}

function OnCollisionEnter (collision : Collision) {
        rigidbody.isKinematic = true;
        strela_go.transform.parent = myHit.collider.transform;
}

@script RequireComponent (Rigidbody)


физика выключается , стрелы останавливаются, но не цепляются к цели.
как объявить эти переменные и какого они типа.
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: баллистика полет стрелы

Сообщение Paul Siberdt 23 фев 2010, 22:01

Что такое myHit? результат трассировщика? Тогда как он обыгрывается в событии коллизии?
У вас ивент коллизии сам по себе содержит указатель на коллайдер препятствия - collider : Collider

вот к его трансформу и цепляйтесь... а еще лучше - поковыряйтесь с документацией, чтоб понять, что там есть что.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: баллистика полет стрелы

Сообщение Order 24 фев 2010, 11:34

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

Синтаксис:
Используется javascript
//скрипт стрелы, баллистическая траектория+застревание в цели.
var timeOut = 10.0;

function Start () {
        //смещение центра тяжести по оси z
        rigidbody.centerOfMass = Vector3 (0, 0, 5);
}
        // функция проверки столкновения
function OnCollisionEnter (collision : Collision) {
        // отключение физики стрелы включение кинематики
        rigidbody.isKinematic = true;
       // координаты стрелы присоединяются к координатам объекта столкновения.
        transform.parent = collision.transform;
}

@script RequireComponent (Rigidbody)
 
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: баллистика полет стрелы

Сообщение Paul Siberdt 24 фев 2010, 11:36

Ну так а где объяснения, как создать баллистическую кривую?
Скрипт только втыкает стрелу :p
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: баллистика полет стрелы

Сообщение Order 24 фев 2010, 14:40

В теме есть объяснения как..
Основной смысл тяжелому заскриптованному наконечнику (стреле) прицепить(фикс джоин) невидимый без колайдерный объект с физикой(оперение), с минимальной массой и повышенной тормознутости в среде.
Из за этого наконечник со смещенным центром тяжести вперед, будет клевать носом в землю. :-q
"Оперение" нужно сделать дочерним стреле иначе будет глючить.

Колайдер стрелы смещается ближе к наконечнику.

К стати стрела при попадании успевает немного отскочить, из за чего выглядит не очень красиво и смещается от точки попадания.. Как с этим можно бороться ? можно как нибудь убрать реакцию стрелы на препятствие, типа заточить :)
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34

Re: баллистика полет стрелы

Сообщение Zaicheg 24 фев 2010, 14:55

Order писал(а):К стати стрела при попадании успевает немного отскочить, из за чего выглядит не очень красиво и смещается от точки попадания.. Как с этим можно бороться ? можно как нибудь убрать реакцию стрелы на препятствие, типа заточить :)

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

Re: баллистика полет стрелы

Сообщение waruiyume 10 янв 2011, 03:49

Способ получить желаймое т.е. поворот стрелы по касательной к траектории без плясок с бубном
FixedJoint и смещеня центра масс :-\
(js)
Синтаксис:
Используется javascript
private var rig : Rigidbody;
rig = rigidbody;

private var trans : Transform;
trans = transform;

private var vel : Vector3;
private var pos : Vector3;

private var plu : Vector3;
plu = Vector3(0,0,-2); //-локальная позиия оперения

rig.angularDrag = 0.5;//-чтобы уменьшить раскачивание при выстреле вверх

function Start()
{
        rig.AddForce (trans.forward*50 , ForceMode.VelocityChange);//-типа выстрел:)
}

function FixedUpdate ()
{
        pos = trans.position+trans.TransformDirection(plu);//-мировая позиия оперения
        vel = trans.InverseTransformDirection (rig.velocity);//-локальная скорость снаряда
        vel.z = 0;//-убираем скорось направленную вперед/назад(относительно стрелы)-это ведь не парашют:)
        vel = -vel/1000;//-поворачиваем скорость на 180* (берем ее отрицатьное значение) и уменьшаем(чем больше делитель тем плавнее поворот)
        vel = trans.TransformDirection (vel);//-скорость торможения в мировой системе координат
        rig.AddForceAtPosition(vel,pos,ForceMode.VelocityChange);//-добавляем скорость торможения в позиции оперения
}
 

результат:
\m/ [unity 3D]
Скрытый текст:
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://www.mpfiles.ru/get/?29151&w=640&h=480&t=true&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>
Последний раз редактировалось waruiyume 11 янв 2011, 03:05, всего редактировалось 1 раз.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Пред.След.

Вернуться в PhysX

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

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


cron