Расчет траектории полета

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

Re: Расчет траектории полета

Сообщение derik1994 16 авг 2013, 01:13

Ну ладно просто хотел помочь :ympeace:
Аватара пользователя
derik1994
UNец
 
Сообщения: 8
Зарегистрирован: 15 авг 2013, 23:47
Откуда: Севастопоь
Skype: derik-3dmax

Re: Расчет траектории полета

Сообщение derik1994 16 авг 2013, 01:18

Извините что не в тему но как можно подсчитать количество испускаемых частиц за всё существование системы частиц!?
Аватара пользователя
derik1994
UNец
 
Сообщения: 8
Зарегистрирован: 15 авг 2013, 23:47
Откуда: Севастопоь
Skype: derik-3dmax

Re: Расчет траектории полета

Сообщение AndreyMust19 26 авг 2013, 21:43

В момент выпуска новой частицы увеличивать счетчик на 1 ?
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Расчет траектории полета

Сообщение sania_3 27 авг 2013, 13:03

Лерпить- не тру, ибо линейная скорость снаряда по горизонтали не меняется, а вот вертикаль умножай на синус (длина_выстрела/сколько_пролетели)*180 . Всё это имеет смысл для тех случаев, где высота выстрела равна высоте попадания. Иначе- матан.

А, да, из длин векторов по вертикали и горизонтали находишь угол, на которую ставить пушку.
sania_3
UNец
 
Сообщения: 36
Зарегистрирован: 25 авг 2013, 12:42

Re: Расчет траектории полета

Сообщение sania_3 27 авг 2013, 13:06

По частицам нужен примерный расчёт или 100% точность?
sania_3
UNец
 
Сообщения: 36
Зарегистрирован: 25 авг 2013, 12:42

Re: Расчет траектории полета

Сообщение 46165957 27 авг 2013, 13:16

Стало интересно.
Решил на graph.tk прикинуть как еще можно траекторию построить.
Показалось подходящей формула - y=( -(x-1)^2+1 ) * h

y - высота объекта.
x - его положение между стартом и финишем.
h - кривизна параболы

Получилось что-т такое:

Синтаксис:
Используется javascript

var moving : boolean;
var currentPosition : Transform;
var targetPosition : Vector3;
var height : float;
var distance : float;
var currentDistance : float;
var relativeDistance : float;

function Start () {
currentPosition = gameObject.transform;
targetPosition = gameObject.transform.position;

}


function Update () {

currentDistance = Vector3.Distance( gameObject.transform.position, Vector3(targetPosition.x, 0, targetPosition.z));

if (currentDistance < 0.25){moving = false;}



if (!moving){

                if (Input.GetMouseButtonDown(0)) {
                        var hit: RaycastHit;
                        var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                       
                        if (Physics.Raycast(ray, hit)) {
                                if (hit.rigidbody != null){
                                        targetPosition = hit.point;
                                        distance = Vector3.Distance( gameObject.transform.position, Vector3(targetPosition.x, 0, targetPosition.z));
                                        moving = true;
                                        }
                                }
                        }
}
                       
                               
if (moving){

relativeDistance = (currentDistance / distance) * 2;
var tmpY = ( - ( (relativeDistance - 1) * (relativeDistance - 1) ) + 1) * (distance / 6) ;  //y=-(x-1)^2+1 - парабола с плюсовыми Y от 0 до +2 по Х
gameObject.transform.position.y = tmpY;

gameObject.transform.LookAt(Vector3(targetPosition.x, gameObject.transform.position.y ,targetPosition.z));
gameObject.transform.Translate(Vector3.forward * Time.deltaTime * 15);
}

}

 


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

а так по горизонтали прямолинейно, по вертикали скорость меняется, имитировать полет ядра - норм.
46165957
Старожил
 
Сообщения: 835
Зарегистрирован: 13 май 2011, 12:14

Пред.

Вернуться в Почемучка

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 16