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

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

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

Регистрация: Jan 2006
Сообщений: 25
Question hitTest и физика отскакивания

Здраствуйте уважаемые посетители форума. У меня к вам вопрос, но для ясности сначало обрисую общую картину.

Я делаю игру где есть рокета которая летает, соответственно должны быть и препядствия, максимум что у меня получилось сделать это отскакивание под правильным углом от плоской стенки:


Код:
onClipEvent (enterFrame) {
	if ((this.hitTest(_root.rocket._x, _root.rocket._y+_root.rocket._height/2, true)) or (this.hitTest(_root.rocket._x, _root.rocket._y-_root.rocket._height/2, true)) or (this.hitTest(_root.rocket._x-_root.rocket._width/2, _root.rocket._y, true)) or (this.hitTest(_root.rocket._x+_root.rocket._width/2, _root.rocket._y, true))) {
		_root.rocket.dY = Math.abs(_root.rocket.dY)*_root.rocket.sopr;
		_root.rocket.dX = _root.rocket.dX*_root.rocket.sopr;
		udar = _root.rocket.dY*5+_root.rocket.dX*5*-1;
		if (udar<10) {
			udar = 0;
		}
		_root.rocket.health -= udar;
	}
}
И то если построить прямоугольник, то будет отскакивать только от одной его стороны. Теперь сам вопрос, как сделать правильное отскакивание от "кривого" обьекта?


Последний раз редактировалось haetorigam#; 22.04.2006 в 05:38.
Старый 30.01.2006, 22:39
ApTypbIч вне форума Посмотреть профиль Отправить личное сообщение для ApTypbIч Найти все сообщения от ApTypbIч
  № 2  
Ответить с цитированием
ApTypbIч
 
Аватар для ApTypbIч

Регистрация: Jan 2006
Сообщений: 43
А я делаю не так...вот так: если хиттест то скорость=скорость-2*скорость. Значение скорости меняется на отрицательное.Получается что обьект отскакивает. А вот насчет кривых не знаю, не использовал.

Старый 31.01.2006, 14:07
nouba вне форума Посмотреть профиль Отправить личное сообщение для nouba Посетить домашнюю страницу nouba Найти все сообщения от nouba
  № 3  
Ответить с цитированием
nouba
 
Аватар для nouba

Регистрация: Sep 2005
Сообщений: 150
Отправить сообщение для nouba с помощью ICQ
Во-первых: пользуйся тегом код а то ваше неудобно читать
Во-вторых: если у тебя будет много обьектов об которые должна ударятся твоя ракета то тормоза начнутся дикие если все хиттестит
И на последок: если уж на хиттестах тогда для отскакивания от всех сторон тебе поможет getBounds() но добится реалистики удара таким макаром тебе будет сложно ибо не забывай то бывают ситуаци когда от стенки ракета ударяется об другую стенку.. и тут уже без векторов не обойтись...
а еще можеш читнуть вот эту статью
http://www.harveycartel.org/metanet/...tutorialA.html

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

Регистрация: Jan 2006
Сообщений: 43
Цитата:
Сообщение от nouba
если уж на хиттестах
А что можно использовать вместо хиттестов?

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

Регистрация: Jan 2006
Сообщений: 25
Цитата:
А я делаю не так...вот так: если хиттест то скорость=скорость-2*скорость. Значение скорости меняется на отрицательное.Получается что обьект отскакивает. А вот насчет кривых не знаю, не использовал.
При твоём методе отскакивание не очень реалистичное.

Цитата:
если у тебя будет много обьектов об которые должна ударятся твоя ракета то тормоза начнутся дикие если все хиттестит
А какая есть альтернатива?

Старый 31.01.2006, 14:50
nouba вне форума Посмотреть профиль Отправить личное сообщение для nouba Посетить домашнюю страницу nouba Найти все сообщения от nouba
  № 6  
Ответить с цитированием
nouba
 
Аватар для nouba

Регистрация: Sep 2005
Сообщений: 150
Отправить сообщение для nouba с помощью ICQ
а ВОТ! и альтернатива

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

Регистрация: Jan 2006
Сообщений: 43
Цитата:
Сообщение от UrbanMan
При твоём методе отскакивание не очень реалистичное.
Не знаю... вот сам смотри
Вложения
Тип файла: rar Phisyc_Gravitation.rar (3.7 Кб, 114 просмотров)

Старый 31.01.2006, 15:17
nouba вне форума Посмотреть профиль Отправить личное сообщение для nouba Посетить домашнюю страницу nouba Найти все сообщения от nouba
  № 8  
Ответить с цитированием
nouba
 
Аватар для nouba

Регистрация: Sep 2005
Сообщений: 150
Отправить сообщение для nouba с помощью ICQ
Посмотрел.... не огу понять зачем ты прототайпиш Нумбер всередине онЕнтерФрейм ???
И код можно было написать раз в 5 короче

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

Регистрация: Jan 2006
Сообщений: 43
да знаю, там половина - лишнее, просто руки не дошли убрать, это я делал когда надо было притяжение реалистичное сделать
а нумбер для округленя значений, во избежание багов, только сам не пойму зачем он там 10 разз.... Вопрос: А как без хиттестов та обойтись?


Последний раз редактировалось ApTypbIч; 31.01.2006 в 15:25.
Старый 31.01.2006, 15:27
nouba вне форума Посмотреть профиль Отправить личное сообщение для nouba Посетить домашнюю страницу nouba Найти все сообщения от nouba
  № 10  
Ответить с цитированием
nouba
 
Аватар для nouba

Регистрация: Sep 2005
Сообщений: 150
Отправить сообщение для nouba с помощью ICQ
Я же кинул ссылку на дельную статью... там подробно описано *смотри выше*
__________________
noubase.com

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

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

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


 


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


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