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

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

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

Сообщение xcube 07 ноя 2012, 10:49

Есть пушка, которая стреляет вверх навесными снарядами (типа мортиры).
Изображение
Суть в том что ползователь кликает по экрану и пушка должна стрельнуть так чтобы снаряд попал точно в то место куда кликнул юзер.
Траекторию полета показывать не буду, но важно чтобы пушка меняла угол или силу стрельбы в зависимости от того насколько далеко от пушки кликнул юзер.

Вот думаю как это лучше реализовать, подключать физику или идти какими то фейковыми путями... подскажите пожалуйста как лучше реализовать эту задачу ?
Изображение
Аватара пользователя
xcube
UNITрон
 
Сообщения: 304
Зарегистрирован: 23 сен 2011, 12:20
Откуда: Spb

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

Сообщение Volandpro 07 ноя 2012, 10:56

высчитываем расстояние до места клика, дальше у нас должен быть еще 1 параметр(сила выстрела или угол, это ты задавай уже как хочешь), а дальше юзай формулу баллистического движения. Если есть сила выстрела - угол будет задан автоматически, и наоборот
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

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

Сообщение Woolf 07 ноя 2012, 10:58

Физика, 8й класс, закон всемирного тяготения. Если учитывается сопротивление воздуха - то еще и законы ньютона.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

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

Сообщение Volandpro 07 ноя 2012, 11:07

Woolf писал(а):Физика, 8й класс, закон всемирного тяготения. Если учитывается сопротивление воздуха - то еще и законы ньютона.

Девятый вроде)
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

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

Сообщение xcube 07 ноя 2012, 12:38

Volandpro писал(а):высчитываем расстояние до места клика, дальше у нас должен быть еще 1 параметр(сила выстрела или угол, это ты задавай уже как хочешь), а дальше юзай формулу баллистического движения. Если есть сила выстрела - угол будет задан автоматически, и наоборот


Спасибо попробую реализовать :-?
О результатах отпишусь
Изображение
Аватара пользователя
xcube
UNITрон
 
Сообщения: 304
Зарегистрирован: 23 сен 2011, 12:20
Откуда: Spb

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

Сообщение AndreyMust19 07 ноя 2012, 13:42

Подключаешь физику, все что нужно - рассчитать по формуле угол наклона вектора от земли и начальную скорость движения снаряда.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

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

Сообщение xcube 07 ноя 2012, 23:56

AndreyMust19 писал(а):Подключаешь физику, все что нужно - рассчитать по формуле угол наклона вектора от земли и начальную скорость движения снаряда.

что-то нигде не могу найти формулу расчета угла (
Здесь наткнулся на калькулятор, он умеет расчитывать угол, там же написали три формулы определения расстояния, высоты и времени, а именно формулу с углом не указали.
Изображение
Аватара пользователя
xcube
UNITрон
 
Сообщения: 304
Зарегистрирован: 23 сен 2011, 12:20
Откуда: Spb

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

Сообщение Volandpro 08 ноя 2012, 09:09

Елси у нас есть синус 2 альфа, можно поставить его в левую часть уравнения, найти его, потом взять арксинус от этого и поделить на 2) Вот тебе и угол
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

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

Сообщение xcube 08 ноя 2012, 18:20

спасибо
но блиин, думаю теперь наврено месяц придется геометрию повторять, я даже толком не понимаю что такое синус косинус, почему иногда синусом называют угол, иногда из синуса и косинуса вобще элипсоиды вьют...
Изображение
Аватара пользователя
xcube
UNITрон
 
Сообщения: 304
Зарегистрирован: 23 сен 2011, 12:20
Откуда: Spb

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

Сообщение KaMiKaZa 08 ноя 2012, 19:26

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

Синусы и косинусы (тангенсы, котангенсы) можно привести к числовой окружности, и тогда они именно углами и будут.
Аватара пользователя
KaMiKaZa
UNIт
 
Сообщения: 75
Зарегистрирован: 29 окт 2012, 15:42
Откуда: ЯНАО, Надым

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

Сообщение xcube 11 ноя 2012, 14:02

Думаю как лучше считать полет снаряда... с физикой или без нее.
Подскажите какой вариант полета снаряда менее ресурсоемкий ?

1) Полет снаряда запущенный импульсом igidbody.AddForce на которм висит Rigidbody c включенной гравитацией (физика)
или
2) Полет снаряда просчитываемый стандартными средствами вот таким скриптом
Синтаксис:
Используется csharp
public float speed = 10;
public float accelUp = 25f;
public float accelDown = 1f;
void Update () {
                accelUp-=accelDown;// gravitaciya
                transform.Translate(new Vector3(speed, accelUp, 0)*Time.deltaTime);
        }
 
Изображение
Аватара пользователя
xcube
UNITрон
 
Сообщения: 304
Зарегистрирован: 23 сен 2011, 12:20
Откуда: Spb

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

Сообщение derik1994 16 авг 2013, 00:38

Думаю разберёшся
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Mortar : Weapon {

        // Use this for initialization
        public float disT;
        public float agleT;
        public float speedT;
       
        void Start () {
       
        }
       
        // Update is called once per frame
        void Update ()
        {
                agleT=AgleBalistic(disT,speedT);
               
        }
        public float AgleBalistic(float distance, float speedBullet)
        {
        //Находим велечину гравитации
        float gravity=Physics.gravity.magnitude;
       
        float discr = Mathf.Pow(speedBullet,4) - 4*(- gravity*gravity/4)*(-distance*distance);
        //Время полёта
        float t = ((-speedBullet*speedBullet)-Mathf.Sqrt(discr))/(-gravity*gravity/2);
        t = Mathf.Sqrt(t);                     
        float th = gravity*t*t/8;
        //Угол пушки
        float agle = 180 * ( Mathf.Atan(4*th/distance) / Mathf.PI);

                //Возрощаем угол
                return(agle);
        }
}
 
Аватара пользователя
derik1994
UNец
 
Сообщения: 8
Зарегистрирован: 15 авг 2013, 23:47
Откуда: Севастопоь
Skype: derik-3dmax

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

Сообщение Левш@ 16 авг 2013, 01:04

Выпускаеш ядро, потом аккуратно лерпиш его forward к направлению конечной точки и никакая баллистика с формулами ни физика тут не нужна.
Синтаксис:
Используется javascript
public var BallisticKoef : float = 10f;  // это подбираем руками
public var targetPosition : Vector3; // сюда передаем координаты цели

function Update () {
    var distance : float = Vector3.Distance(targetPosition , transform.position);
    transform.forward = Vector3.Lerp(transform.forward, targetPosition - transform.position, Time.deltaTime * (BallisticKoef / distance));
    transform.Translate(transform.forward * speed * Time.deltaTime);
}
 

Скрипт вешаем на ядро, при инстансе ядра передаем ему координаты цели (дальше оно само ее найдет).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

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

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

Ну а если цель уйдёт с траектории то ядро
полетит за нею как ракета с самонаведением !?))
Последний раз редактировалось derik1994 16 авг 2013, 01:12, всего редактировалось 1 раз.
Аватара пользователя
derik1994
UNец
 
Сообщения: 8
Зарегистрирован: 15 авг 2013, 23:47
Откуда: Севастопоь
Skype: derik-3dmax

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

Сообщение Левш@ 16 авг 2013, 01:12

Не полетит, смотри внимательней.
Ты передаешь значение координат только 1 раз при инстансе и они останутся неизменны.
Ядро опишет плавную траекторию иммитируя баллистику и ударит точно в ту точку в которую ты ткнул.
Последний раз редактировалось Левш@ 16 авг 2013, 01:17, всего редактировалось 2 раз(а).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

След.

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

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

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