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

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

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

Регистрация: Apr 2006
Сообщений: 59
Отправить сообщение для dow с помощью ICQ
По умолчанию Проверка на столкновение (hitTest)

есть 2 клипа. 1 клип управляется с клавы-гл герой. Второй клип-это окружаюший мир. я сделал,чтобы гл герой падал на мир и не проваливался сквозь него (по оси Y), но зато по оси X он проходит насквозь.Вот код и swf приатачен.
Я уже не пойму как сделать, чтобы гл герой не проваливался в мир не через Y и не через X. И еще почему то он иногда проваливается в мир по Y, но недоконца,если подпрыгнуть,то все становится как надо.Откликнитесь плиз.
Код:
onClipEvent (load) {
	speed = 2;
	power = 10;
	yspeed = 0;
	gravity = 1;
	sunken = 0;
}
onClipEvent (enterFrame) {
	//управление с клавы
	if (Key.isDown(Key.UP)) {  //прыжок
		_root.hero._y -= power;
	}
	if (Key.isDown(Key.LEFT)) { //влево
		_x -= speed;
	}
	if (Key.isDown(Key.RIGHT)) {//вправо
		_x += speed;
	}
	//====конец упр
	//условия ПРИ СТОЛКНОВЕНИИ
	if (sunken == 0) {    
		yspeed += gravity;
		_root.hero._y = _y+yspeed;  //продолжить падение
	} else {
		_root.hero._y = _y; //остановить героя
	}
	
	//проверка столкновения
	if (_root.enviroment.hitTest(_x,_y+10,true)) { //столкновения произошло
		sunken = 1;
		yspeed = 0;  //отключить скорость по У
	} else {
		sunken = 0;
	}
}
Вложения
Тип файла: zip wtf.zip (658 байт, 71 просмотров)

Старый 08.06.2009, 19:30
incorp вне форума Посмотреть профиль Отправить личное сообщение для incorp Найти все сообщения от incorp
  № 2  
Ответить с цитированием
incorp

Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
первая проблема в том что герой при падении каждый раз продвигается сразу на несколько пикселей прежде чем происходит хитТест. косвенным подтверждениемэтому может служить то что величина "провала" зависит от "мощности прыжка". тобишь на предыдущей итерации хит тест не сработал, на следующей он уже перепрыгнув десяток пикселов со своей гравитацией по уши в земле. чтобы не ходил сквозь стены нужно после того как он попытался пойти в стену вернуть его на место. но при этом не перепутать горизонтальное столкновение и вертикальное. чтобы вертикальный хиттест не срабатывал можно определить перса на пиксель выше поверхности. но вопрос тогда в том где же У поверхности. поэтому лично я бы сделал блоки горизонтальные и вертикальные, каждые со своим хит тестом. это сильно все упростит. удачи.
Перечитал, подумал что может быть не понятно написано. Суть в том что онИнтерФрейм здесь - не айс. временные интервалы одинаковые, поэтому увеличение скорости достигается увеличением координаты на энное значение в итерацию. Удобнее будет если это будет СетИнтервал, тогда увеличения скорости(гравитации) можно будет добиться уменьшением временных промежутков, через которые вызывается увеличение координаты на единицу. тогда и хит тест будет работать адекватно.


Последний раз редактировалось incorp; 08.06.2009 в 19:45.
Старый 09.06.2009, 06:33
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 3  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Возможно вам следует смотреть в сторону getPixel

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

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

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


 


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


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