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

Регистрация: Feb 2014
Сообщений: 25
Спасибо за помощь
Код AS3:
var obj1:Array= new Array(); // Тут будут хранится все объекты которые мы видим на сцене
var obj2:Array= new Array(); // Тут только те, которые имеют класс Stone - это наши столбы, камни
 
for (var i:int = 0; i< this.numChildren; i++) // Проходим все дочернии объекты, если встречается объект класса Stone - закидываем его в массив obj2 с которым и будем работать
{
	obj1[i] = this.getChildAt(i);
	if (obj1[i] is Stone)
	{
		obj2.push(obj1[i]);
	}
}
 
var vr:Number = cycle.y;
 
stage.addEventListener(Event.ENTER_FRAME,onFrameLoop);
 
 
function onFrameLoop(evt:Event):void
{
	cycle.x = mouseX;
	cycle.wheel.rotation = mouseX;
    for (var j:int = 0; j< obj2.length; j++){
 
	if (cycle.hitTestObject(obj2[j]))
	{
	cycle.y = vr - obj2[j].height;
	break;
	}
	else
	{
	cycle.y = vr;
	}
   }
}
Цитата:
и пройденные столбы из массива выкидывайте
Вот тут даже не знаю или стоит делать, а если и стоит - то как реализовать, потому что велосипед ездит как вперед так и назад, и он может снова наехать на столб.

П.С. Да, это самый "прямой метод" над которым я и сначала думал, но... он очень ресурсозатратный, с каждым кадром нужно проходить цикл...

Можно ли как то реализовать столкновение как тут cycle.hitTestObject(st), но не с конкретным объектом st , а с классом объектов, например с классом Stone ?