Показать сообщение отдельно
  #1 (permalink)  
Старый 19.09.2010, 11:15
Аспирант
Отправить личное сообщение для daMage Посмотреть профиль Найти все сообщения от daMage
 
Регистрация: 31.07.2010
Сообщений: 35

Создание игры
Хочу создать несколько игр(Super Mario, к примеру), для комфорта нехватает несколько деталей. Вот одна из них: есть два объекта, 1 - динамический(Марио), 2 - статический(стена). Нужно, что бы когда Марио врезался в стену, он останавливался. Я использовал функцию hitTestObject().
Вот код: http://depositfiles.com/files/v05dd7ett со сценой.
В коде вы найдете строки:
private function manMove(event:Event):void {
	if(leftBindPressed && man.x > 0 + 24 && !man.hitTestObject(wall)) man.x -= speed;
	if(rightBindPressed && man.x < floor.width && !man.hitTestObject(wall)) man.x += speed;
	if(topBindPressed && man.y > 0 + 24 && !man.hitTestObject(wall)) man.y -= speed;
	if(bottomBindPressed && man.y < floor.y && !man.hitTestObject(wall)) man.y += speed;
}

Как видно из этого кода, проверка
!man.hitTestObject(wall)
появляется при кажом движении в разные стороны, то есть, если Марио,к примеру, врежится в стену, но двигатся он уже вобще не сможет, потому что на все четыре стороны проверка !man.hitTestObject(wall) будет выдавать true. Так вот вопрос: можно ли как то сделать проверку не так:
!man.hitTestObject(wall),
а так
!man.hitTestObject(wall.left),
то есть указывать с какой стороны стены должна происходить эта проверка и тогда, если я врежусь слева, я остановлюсь, но смогу двигатся в другие оставшиеся стороны. Ну или подскажите любую другую функцию, которая меня выручит. Спасибо
Ответить с цитированием