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

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

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

Регистрация: Jul 2008
Сообщений: 4
здрасти всем, пытаюсь написать аэрохоккей, и ну никак не могу избавиться от бага, проблема в следущем:при отбиении мяча иногда мяч пролетает сквозь биту а иногда просто залипает к ней, не могу понять почему...буду благодарен если хоть намекнете на проблему
исходник прикрепил и рядом с ним реализованная игра вот именно к этой игре хочу приблизить свою но...увы. код не слизан!

а вот ссылка на готовую игрулю

iNils - сори


Последний раз редактировалось big_shtorm; 24.07.2008 в 14:01. Причина: обновил исходник
Старый 07.07.2008, 12:37
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от big_shtorm Посмотреть сообщение
не сочтите за флуд с первого раза не вышло файл зацепить
Для этого есть кнопка
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 07.07.2008, 17:55
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 3  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Здравствуйте big_shtorm!
Попробуйте использовать hitTest. Еще одно. Мне непонятно зачем на Symbol 1 навешен код? Почему бы сразу не на _root.
__________________
Случайность, господа, это знаете ли непознанная необходимость.

Старый 09.07.2008, 11:36
big_shtorm вне форума Посмотреть профиль Отправить личное сообщение для big_shtorm Найти все сообщения от big_shtorm
  № 4  
Ответить с цитированием
big_shtorm

Регистрация: Jul 2008
Сообщений: 4
Alex_beginner ваше замечание учел, поправил код, попробывал hitTest (в общем в исходнике 3 разных способа обнаружения сталкновения) результат не очень красивый зато вроде мячь не проскакивает насквозь, но вот проблема с залипанием на биту осталась ((( причем она выевляеться когда скорость биты равна 0, пробывал сравить условие чтоб никогда не была равна нулю...при этом она липнет и дергаясь отлетает...я думаю что всетаки я чтото напартачил с функцией реакции на столкновение function reaction(). об этой функции рассказываеться в книге "Секреты разработки игр в Macromedia Flash MX" Джоб Макар вот так она выглядит у него для двух шаров типа бильярд:
Код:
function reaction(b1, b2, x1, x2, y1, y2, time) {
	var mass1 = b1.mass;
	var mass2 = b2.mass;
	var xVel1 = b1.xmov;
	var xVel2 = b2.xmov;
	var yVel1 = b1.ymov;
	var yVel2 = b2.ymov;
	var run = (x1-x2);
	var rise = (y1-y2);
	var theta = Math.atan2(rise, run);
	var costheta = Math.cos(theta);
	var sintheta = Math.sin(theta);
	var xVel1prime = xVel1*costheta+yVel1*sintheta;
	var xVel2prime = xVel2*costheta+yVel2*sintheta;
	var yVel1prime = yVel1*costheta-xVel1*sintheta;
	var yVel2prime = yVel2*costheta-xVel2*sintheta;
	var P = (mass1*xVel1prime+mass2*xVel2prime);
	var V = (xVel1prime-xVel2prime);
	var v2f = (P+mass1*V)/(mass1+mass2);
	var v1f = v2f-xVel1prime+xVel2prime;
	var xVel1prime = v1f;
	var xVel2prime = v2f;
	var xVel1 = xVel1prime*costheta-yVel1prime*sintheta;
	var xVel2 = xVel2prime*costheta-yVel2prime*sintheta;
	var yVel1 = yVel1prime*costheta+xVel1prime*sintheta;
	var yVel2 = yVel2prime*costheta+xVel2prime*sintheta;
	var b1.tempx = b1.xpos+b1.xmov*time;
	var b1.tempy = b1.ypos+b1.ymov*time;
	var b2.tempx = b2.xpos+b2.xmov*time;
	var b2.tempy = b2.ypos+b2.ymov*time;
	var b1.xmov = xVel1;
	var b2.xmov = xVel2;
	var b1.ymov = yVel1;
	var b2.ymov = yVel2;
}
что я делаю не так? Спасибо


Последний раз редактировалось iNils; 09.07.2008 в 11:39.
Старый 18.07.2008, 17:11
Dectora_Selfcit вне форума Посмотреть профиль Отправить личное сообщение для Dectora_Selfcit Найти все сообщения от Dectora_Selfcit
  № 5  
Ответить с цитированием
Dectora_Selfcit
 
Аватар для Dectora_Selfcit

Регистрация: Jul 2005
Адрес: Москва
Сообщений: 25
Отправить сообщение для Dectora_Selfcit с помощью ICQ Отправить сообщение для Dectora_Selfcit с помощью MSN
Столкнулась с такой же проблемой.

В моем случае я предполагаю, что такое безобразие происходит из-за того, что точек соприкосновения объектов получается много.

Возьмем мячик (кружок), ударяется о стену.
У кружка по радиусу получается до 360 точек соприкосновения. Скорость мяча все время разная, допустим за кадр он пробегает 5, будем так говорить, пикселей,
тогда пока он будет отскакивать получается он проскочить еще пару пискелей, от чего и получается что он дерагется.

Как решить этот вопрос?

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

Регистрация: Jul 2005
Адрес: Москва
Сообщений: 25
Отправить сообщение для Dectora_Selfcit с помощью ICQ Отправить сообщение для Dectora_Selfcit с помощью MSN
Эй ребята, как так, это очень многим поможет.

Старый 21.07.2008, 18:59
robin_bobin2001 вне форума Посмотреть профиль Отправить личное сообщение для robin_bobin2001 Посетить домашнюю страницу robin_bobin2001 Найти все сообщения от robin_bobin2001
  № 7  
Ответить с цитированием
robin_bobin2001

Регистрация: Jun 2004
Адрес: Севастополь, Украина
Сообщений: 124
Отправить сообщение для robin_bobin2001 с помощью ICQ Отправить сообщение для robin_bobin2001 с помощью Skype™
в исходнике все события отслеживаются в:
Код:
_root.onEnterFrame = function (){
	_root.moveball();
	_root.detected3();
	_root.mov();
}
нужно как-то пытаться отслеживать столкновения биты с мячиком в onMouseMove. Я прицепил на основной таймлайн дополнительно:
Код:
_root.onMouseMove=function(){
	_root.detected3();
	}
вроде не так заметны залипания...

Старый 22.07.2008, 17:07
big_shtorm вне форума Посмотреть профиль Отправить личное сообщение для big_shtorm Найти все сообщения от big_shtorm
  № 8  
Ответить с цитированием
big_shtorm

Регистрация: Jul 2008
Сообщений: 4
Ребят, попробывал все сделать по книге...собрал необходимые функции в одну кучу и получилось неплохо...только вот для шаров которые катаються "сами по себе" типа бильярд...но когда перевожу управление одним шаром на мышь получается лажа ((( может надо както по другому подойти к этому всему подскажите кто сталкивался ато скоро ап стену уже убьюсь


Последний раз редактировалось big_shtorm; 24.07.2008 в 14:02.
Старый 24.07.2008, 14:16
big_shtorm вне форума Посмотреть профиль Отправить личное сообщение для big_shtorm Найти все сообщения от big_shtorm
  № 9  
Ответить с цитированием
big_shtorm

Регистрация: Jul 2008
Сообщений: 4
ура...
Проблему решил добовлением дополнительной проверки по сумме радиусов...которая вызывает функцию прощета новых векторных скоростей со статичным временным параметром...т.е. работают 2 проверки первая основная прощитывает на 1 кадр вперед (котроя к стати и не всегда срабатывала почемуто) и проверка по сумме радиусов.
выкладываю исходники, может кому пригодяться иль лучше сделает...(не забыв об авторе )
billard - это для бильярда и т.п. с сохранением почти всех законов физики(для добавления затухания нужно добавить переменную со значением от 0 до 1 и в каждом кадре умножать ускорение жаров на нее)
airhockey - собственно хоккей.
P.S. спосибо всем кто учавствовал.
Вложения
Тип файла: zip airhockey.zip (12.4 Кб, 83 просмотров)
Тип файла: zip billard.zip (6.0 Кб, 84 просмотров)


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

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

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


 


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


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