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

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

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

Регистрация: Apr 2010
Сообщений: 137
По умолчанию Мгновенный полет пули

При нажатии на ЛКМ из пистолета вылетает пуля. На данный момент она летит не очень быстро, и при столкновении с объектом делает определенные действия. Как сделать так, чтобы пуля летела очень быстро (например, если пистолет с одной стороны поля, а объект с другой), и через 1-2 кадра уже столкнулась с объектом. Проблема в том, что быстрый полет пули дает большой шанс того, что она пролетит насквозь объекта. Т.е. пуля - это небольшая точка, и если за кадр она будет пролетать по 100 (примерно) пикселей, то сами понимаете, то что было в этих 100 пикселях останется не тронутым. Пытался делать пулю длинной, чтобы её конец на следующий кадр оказался её началом, но тогда если я стрельну на 45 градусов (вид сверху), то область прорисовки покажет, какую огромную область занимает пуля. Тогда по объекту и целится не придется.
Вопрос в следующем, как реализовать такую стрельбу? Или в другом случае как сделать так, чтобы у пули была область прорисовки как на рисунке 1, а не как на рисунке 2 (красная область - область прорисовки; черное - пуля)

Если кто-то менял понял, прошу помощи!
Изображения
 

Старый 01.12.2012, 22:06
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Математикой считаете пересечение прямой траектории пули с целью-врагом — так узнаете, было ли столкновение. Пуля летит не дальше координат врага, после чего пропадает (просто для наглядности и красоты).
__________________
тут я

Старый 01.12.2012, 23:04
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 3  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
speedBulletVedroid = скорость полёта пули.
Код AS3:
//Функция для работы с пулями ведроида:
function movedBulletVedroid(argument,i)
{
	//Если координата x больше, чем -1000, то:
	if(argument.x > -1000)
	{
		//Изменяю координату x у пули:
		argument.x -= speedBulletVedroid * Math.cos(argument.rotation * (Math.PI / 180));
		//Изменяю координату y у пули:
		argument.y += speedBulletVedroid * Math.sin(argument.rotation * (Math.PI / -180));
		//Изменяю угол поворота у пули:
		argument.rotation = arrayAngleBullet[i];
	}
	//Если пуля находится в области НЛО, то:
	if(argument.x < ufo.x + ufo.width / 2 && argument.x > ufo.x - ufo.width / 2 && argument.y < ufo.y + ufo.height && argument.y > ufo.y)
	{	
		//Если на сцене есть пуля, то:
		if(stage.contains(argument))
		{
			//Воспроизвожу звук касания пули и НЛО:
			soundChannel = soundIron.play();
			//Удаляю пулю со сцены:
			removeChild(argument);
		}
	}
}

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

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от КорДум Посмотреть сообщение
Математикой считаете пересечение прямой траектории пули с целью-врагом — так узнаете, было ли столкновение. Пуля летит не дальше координат врага, после чего пропадает (просто для наглядности и красоты).
Благодарю за то, что правильно направили!) Сильно помучился без примера, но в итоге получилось).

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Рад, что получилось. Вы тоже не предоставили кода =)
__________________
тут я

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

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от КорДум Посмотреть сообщение
Рад, что получилось. Вы тоже не предоставили кода =)
Дело не в коде ведь было даже, так что и показать нечего было). Скрином показал).

Старый 02.12.2012, 17:28
Ленок вне форума Посмотреть профиль Отправить личное сообщение для Ленок Найти все сообщения от Ленок
  № 7  
Ответить с цитированием
Ленок

Регистрация: Nov 2012
Сообщений: 31
Кстати, баллистическую траекторию сделать не так сложно. Простое квадратное уравнение. А какие возможности открываются...

Разделите на два метода:
1. Анимация движения пули
2. Обнаружение попадания

Первый метод оперирует шагом, в зависимости от скорости (FPS, полагаю, должен быть фиксированным - 25?)
Второй метод - простая формула. И для прямой, и для гиперболы - определяет, находится ли объект на траектории полета пули. Если нельзя пренебречь движением объекта - тогда проверять, находится ли объект на траектории полета пули в новом местоположении. Тут частота может быть ниже, например 5-10Гц

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

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

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


 


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


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