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

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

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

Регистрация: Dec 2005
Сообщений: 219
Отправить сообщение для _sestra_ с помощью ICQ Отправить сообщение для _sestra_ с помощью Skype™
По умолчанию Расчитать путь передвижения объекта

Создаю игру Online Ping Pong.
- В связи с различной скоростью передачи данных приходиться регулировать замедление или ускорение полёта шарика у отбившего игрока, для корректого отображения полёта.
- Полёт шарика осуществляю так:

Код:
speed = 10;
corner = 217;
ball._x += speed * Math.sin( Math.PI * corner / 180 );
ball._y -= speed * Math.cos( Math.PI * corner / 180 );
- Вопрос:
Как расчитать весь путь полёта от одной стороны до другой, зная его угол ( например 32º ).




Ширина и высота области извесна.
__________________
Счастье - это хорошее здоровье и плохая память


Последний раз редактировалось _sestra_; 16.01.2007 в 13:19.
Старый 16.01.2007, 13:23
FourSide вне форума Посмотреть профиль Отправить личное сообщение для FourSide Найти все сообщения от FourSide
  № 2  
Ответить с цитированием
FourSide

Регистрация: Jul 2006
Сообщений: 387
Отправить сообщение для FourSide с помощью Skype™
Сложить вместе длины отрезков. Если каждая красная точка задаётся (или можно расчитать) координатами x и y, то посчитать длину каждого отрезка не очень сложно.

Старый 16.01.2007, 13:58
3vc вне форума Посмотреть профиль Отправить личное сообщение для 3vc Найти все сообщения от 3vc
  № 3  
Ответить с цитированием
3vc

Регистрация: Dec 2006
Сообщений: 17
А зачем регулировать замедление или ускорение полёта шарика, если можно поставить интервал равный к примеру 0,1 секунды для обновления всего мувика?
Делается функцией setInterval();

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

Регистрация: Dec 2005
Сообщений: 219
Отправить сообщение для _sestra_ с помощью ICQ Отправить сообщение для _sestra_ с помощью Skype™
Цитата:
Сообщение от FourSide
Сложить вместе длины отрезков. Если каждая красная точка задаётся (или можно расчитать) координатами x и y, то посчитать длину каждого отрезка не очень сложно.
Для того что бы сложить все длины отрезков я должен из узнать сначала. 2-а способа:
1) Эмитировать полёт, ударять об стенку шарик, узнавать новый угол, потом в сл. стенку, ещё угол и длинная отрезка...и т.п.
2) Через мат. формулу. Типа угол, сторона, равнобедренные треугольники и т.п.
Сам в геометрии не очень, но + её нужно под Флешь ещё написать...

Хотелось бы 2-ой вариант внедрить...
__________________
Счастье - это хорошее здоровье и плохая память


Последний раз редактировалось _sestra_; 16.01.2007 в 14:08.
Старый 16.01.2007, 14:06
_sestra_ вне форума Посмотреть профиль Отправить личное сообщение для _sestra_ Найти все сообщения от _sestra_
  № 5  
Ответить с цитированием
_sestra_
 
Аватар для _sestra_

Регистрация: Dec 2005
Сообщений: 219
Отправить сообщение для _sestra_ с помощью ICQ Отправить сообщение для _sestra_ с помощью Skype™
Цитата:
Сообщение от 3vc
А зачем регулировать замедление или ускорение полёта шарика, если можно поставить интервал равный к примеру 0,1 секунды для обновления всего мувика?
Делается функцией setInterval();

Смотри:
- летит шарик ко мне.
- я его отбиваю и посылаю: "новый угол, скорость, положение биты, x, y..." и т.п.
- время на отправку заняло например 3 сек ( при плохой скорости )
- т.е. у 2-ого игрока шарик начнёт двигаться только через 3 сек, к тому времени как у меня он уже 3 сек будет лететь к нему...

Эту разницу отображения нужно регулировать скоростью полёта. Для этого нужно узнать путь.
__________________
Счастье - это хорошее здоровье и плохая память


Последний раз редактировалось _sestra_; 16.01.2007 в 14:11.
Старый 16.01.2007, 14:11
FourSide вне форума Посмотреть профиль Отправить личное сообщение для FourSide Найти все сообщения от FourSide
  № 6  
Ответить с цитированием
FourSide

Регистрация: Jul 2006
Сообщений: 387
Отправить сообщение для FourSide с помощью Skype™
Цитата:
Сообщение от _sestra_
Хотелось бы 2-ой вариант внедрить...
Дык второй вариант и делать. Высота и ширина всей области известна, значит все необходимые данные у нас есть.

Старый 16.01.2007, 14:14
_sestra_ вне форума Посмотреть профиль Отправить личное сообщение для _sestra_ Найти все сообщения от _sestra_
  № 7  
Ответить с цитированием
_sestra_
 
Аватар для _sestra_

Регистрация: Dec 2005
Сообщений: 219
Отправить сообщение для _sestra_ с помощью ICQ Отправить сообщение для _sestra_ с помощью Skype™
Цитата:
Сообщение от FourSide
Дык второй вариант и делать. Высота и ширина всей области известна, значит все необходимые данные у нас есть.
К счастью да.
Подскажи пожалуйста вычисления. Моя голова пока до этого дойти не может
__________________
Счастье - это хорошее здоровье и плохая память


Последний раз редактировалось _sestra_; 16.01.2007 в 14:18.
Старый 16.01.2007, 14:17
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 8  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
А скорость полета будешь менять после столкновения?
А угол падения равен углу отражения или шарик "подкручен"?

Старый 16.01.2007, 14:21
_sestra_ вне форума Посмотреть профиль Отправить личное сообщение для _sestra_ Найти все сообщения от _sestra_
  № 9  
Ответить с цитированием
_sestra_
 
Аватар для _sestra_

Регистрация: Dec 2005
Сообщений: 219
Отправить сообщение для _sestra_ с помощью ICQ Отправить сообщение для _sestra_ с помощью Skype™
Цитата:
Сообщение от Kikasso
А скорость полета будешь менять после столкновения?
А угол падения равен углу отражения или шарик "подкручен"?
Возможно потом появяться препядствия, и подкручивания, но пока ничего не подкручиваю и не меняю скорость. Просто голый путь геометрически выведенный.
__________________
Счастье - это хорошее здоровье и плохая память

Старый 16.01.2007, 14:22
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 10  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Цитата:
Сообщение от _sestra_
- Полёт шарика осуществляю так:
Код:
speed = 10;
corner = 217;
ball._x += speed * Math.sin( Math.PI * corner / 180 );
ball._y -= speed * Math.cos( Math.PI * corner / 180 );
Можно немного оптимизировать вычисления:
Код:
// удар
speed = 10;
corner = 217;
// раскладываем скорость по осям
speedX = speed * Math.sin( Math.PI * corner / 180 );
speedY = speed * Math.cos( Math.PI * corner / 180 );
// полет
ball._x += speedX;
ball._y += speedY;
смотришь расстояние до стенки dy, считаешь время за которое мячик до стенки долетит, считаешь горизонтальное смещение до удара dx. Сравниваешь ее координату x с краем поля, если шарик дальше - поступаешь наоборот, смотришь на dy и получаешь dx. Если нет, повторяешь цикл, просто меняя знак speedY на противоположный.

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

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

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


 


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


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