Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.05.2013, 23:44
Mkey вне форума Посмотреть профиль Отправить личное сообщение для Mkey Найти все сообщения от Mkey
  № 1  
Ответить с цитированием
Mkey
 
Аватар для Mkey

Регистрация: Apr 2012
Сообщений: 88
По умолчанию Физика, Угол наклона в полете.

Конечно с AS3 тут мало что связано, кроме того что реализуется именно на этом языке.
Хочу попросить помощи людей которые знают физику.
Есть Косм. Корабль который летит по разнообразной траектории и с разной скоростью.
Хочу реализовать наклон при взлете и падение.
На тело действуют три "силы"
Это "скорость" направленная под 90 градусов.
Это Гравитация
Это Сопротивление гравитации. При запуске двигателя она равна (гравитация)х2.
Сейчас использую rotation с изменением по формуле:
Код:
sqrt(pow(speed,2)+pow(gravity,2))/25;
25 половина ширины мувиклипа коробля.
Ну и вращение не плавное и какое то говнянное. Видимо формула не та.
Миниатюры
Нажмите на изображение для увеличения
Название: flyanimation.gif
Просмотров: 105
Размер:	12.0 Кб
ID:	29512  

Старый 12.05.2013, 03:24
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Создайте вашему кораблике вектор движения:
Код AS3:
var velacity:Point;
Опишите силы:
Код AS3:
var gravity:Point = new Point(0, -2);
var powerUp:Point;
Каждый шаг в игре рассчитывайте действующие силы.
Например сила, поднимающая вверх будет пропорциональна квадрату скорости:
Код AS3:
powerUp = new Point(0, velacity.length * velacity.length); // Такое адское взлетание
После расчёта всех сил, просто суммируйте их:
Код AS3:
velacity.add(gravity);
velacity.add(powerUp);
Двигаем кораблик в соответствий с новой силой:
Код AS3:
ship.x += velacity.x;
ship.y += velacity.y;
Можно сделать угол поворота кораблика в зависимости от какой-то силы, например, пусть кораблик всегда смотрит носом в направлении своего движения:
Код AS3:
ship.rotation = Math.atan2(velacity.y, velacity.x) * (180 / Math.PI);
На самом деле, немного тригонометрий, чуточку фантазий и можно сделать вообще любое поведение кораблику!
пс. Я хотел показать принцип, может где-то ошибся..
__________________
Дети не должны знать о своих родителях

Старый 12.05.2013, 03:28
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 3  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Это Сопротивление гравитации
С этим ещё можно смириться, антигравитационные технологии, все дела.
Но не с этим:
Цитата:
На тело действуют три "силы"
Это "скорость" направленная под 90 градусов.
Скрость - это не сила, не сила это!

В любом случае если хотите направить корабль вдоль траектории:
- находите изменение координат за кадр dx, dy
- находите угол по этим изменениям
Код AS3:
private var _lastX:Number = 0;
private var _lastY:Number = 0;
private onEnterFrame(...):void {
    var dx:Number = _ship.x - _lastX;
    var dy:Number = _ship.y - _lastY;
    _lastX = _ship.x;
    _lastY = _ship.y;
    if (Math.abs(dx) + Math.abs(dy) > 0.0001) {//Поворачиваемся, только если корабль не стоит на месте
        _ship.rotation = Math.atan2(dy, dx) * 180 / Math.PI;
    }
}

Старый 13.05.2013, 01:27
Mkey вне форума Посмотреть профиль Отправить личное сообщение для Mkey Найти все сообщения от Mkey
  № 4  
Ответить с цитированием
Mkey
 
Аватар для Mkey

Регистрация: Apr 2012
Сообщений: 88
Парни спасибо за помощь, осталось сделать плавное ускорение
Цитата:
Скрость - это не сила, не сила это!
Да скорость в кавычках

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:46.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.