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

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

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

Регистрация: Apr 2012
Сообщений: 213
Box2d 2д даст возможность работать с чем-то НЕ квадратным и задавать такие параметры как трение, плотность и тд. Конечно можно всё это прописать в ручную, но блин, зачем придумывать велосипед?

Старый 03.03.2015, 08:05
бакуард вне форума Посмотреть профиль Отправить личное сообщение для бакуард Найти все сообщения от бакуард
  № 12  
Ответить с цитированием
бакуард

Регистрация: Mar 2015
Сообщений: 64
в классах пока не пробовал

Добавлено через 5 часов 12 минут
Попробовал другой вариант, полностью отказавшись от метода hitTest.

Код AS3:
//столкновение с платформой с боку
var distanceX:Number = slime.width/2 + platform2.width/2;
var distanceY:Number = slime.height/2 + platform2.height/2 - 3;
var pt1:Point = new Point();
var pt2:Point = new Point();
var pt3:Point = new Point();
function fDetectionSide () {
pt1.y = slime.y;
pt1.x = slime.x;
pt2.x = platform2.x;
pt2.y = platform2.y;
pt3.x = slime.x;
pt3.y = platform2.y;
 
var distance_pt1pt3 = Point.distance(pt3, pt1);
var distance_pt2pt3 = Point.distance(pt2, pt3);
if((distance_pt1pt3 < distanceX) && (distance_pt2pt3 < distanceY)) {
if(slime.x > platform2.x){
slime.x = platform2.x + distanceX;
}
if(slime.x < platform2.x){
slime.x = platform2.x - distanceX;
}
}
}

Метод Point.distance не срабатывает. В чем причина ?

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

Регистрация: Jun 2014
Сообщений: 558
да добавте уже слушатель событий! Я уже писал ранее

Добавлено через 46 секунд
и сделайте всё через массив

Добавлено через 3 минуты
Point.distance вообще не уверен, что в вашем случаи подходит

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

Регистрация: Mar 2015
Сообщений: 64
Слушатель есть. Но это в другой части кода (здесь я я его не показал).
На счет Box2d - сейчас пробую, но хотелось бы делать игры и без помощи движков
(смущает ограниченный набор возможностей, хотя мне этого сейчас вполне хватает, но на будущее,
когда запросы вырастут - этого будет не достаточно. Поэтому стараюсь уже сейчас изучать языки программирования).

Старый 03.03.2015, 15:08
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 15  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
для каждой функции нужен слушатель, если её не вызывает функция, в которой есть слушатель. Запишите в вашу функции trace(123) если постоянно появляется новый вывод, тогда ENTER_FRAME для функции работает

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

Регистрация: Mar 2015
Сообщений: 64
функция о которой я писал записана в обработчик событий ENTER_FRAME. trace(123) тоже записывал
все работает, но проблема о которой я писал осталась.

Старый 03.03.2015, 21:15
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 17  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
тогда может стоит наконец сделать через массив - это легко и быстро и тогда в вашем коде можно будет вполне разобраться
ни знаю как другие, просто я ваш код с трудом понимаю и не всё

Добавлено через 22 минуты
а из первого варианта так будет в теории правильней
Код AS3:
function fDetectionSide() { //функция столкновения с объектами расположенными по бокам платформ 
	for (var i: int = 1; i < 8; i++) {
		var plft = root["platform" + i];
		if (slime.hitTestObject(wall))
			slime.x = plft.x - plft.width / 2 - slime.width / 2 - 1;
	}
	for (var w: int = 1; w < 8; w++) {
		var plft1 = root["platform" + w];
		if (slime.hitTestObject(wall2))
			slime.x = plft1.x + plft1.width / 2 + slime.width / 2 + 1;
	}
}


Последний раз редактировалось neonoviiwolf; 03.03.2015 в 21:38.
Старый 03.03.2015, 23:03
Digital вне форума Посмотреть профиль Отправить личное сообщение для Digital Найти все сообщения от Digital
  № 18  
Ответить с цитированием
Digital

Регистрация: Apr 2012
Сообщений: 213
neonoviiwolf, я же так ему и написал, но судя по всему всё равно не работает

Старый 03.03.2015, 23:15
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 19  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
думаю вся проблема в
Код AS3:
var plft1 = root["platform" + w];
		if (slime.hitTestObject(wall2))
это как-то ж по мне, хотя я просто не понимаю первую строчку

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

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

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


 


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


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