Показать сообщение отдельно
Старый 02.01.2012, 21:29
Обломов вне форума Посмотреть профиль Отправить личное сообщение для Обломов Найти все сообщения от Обломов
  № 5  
Ответить с цитированием
Обломов

Регистрация: Dec 2011
Сообщений: 7
Сделал, работает отлично! После этого сделал столкновение справа и слева, все гуд, но не получается нормально сделать столкновение с платформой сверху, при прыжке - прыжок тормозится, но персонаж всё равно головой проходит сквозь платформу, пробовал исправить тем же приемом, что Вы посоветовали выше - не помогает. Что можете подсказать?
Вот код на данный момент:
Код AS1/AS2:
var boxes = [];
addBox = function (obj) {
	boxes.push(obj);
};
prityazhenie = 20;
humanstep = 15;
grav = 3; //замедление скорости прыжка, направленной вверх
jumptime = 0;
humanjump = false;
humanreversed = false;
jumpstep = 25;
//движение вправо и влево
function Movement() {
	if (Key.isDown(key.RIGHT)) {
		human._x += humanstep;
		human._xscale = 40;
		human.gotoAndPlay(1);
		humanreversed = false;
	} else if (Key.isDown(key.LEFT)) {
		human._x -= humanstep;
		human._xscale = -40;
		human.gotoAndPlay(1);
		humanreversed = true;
	} else {
		human.gotoAndPlay(3);
	}
}
checkHitPlatform = function () {
	var i = boxes.length;
	while (i--) {
		var curB = boxes[i];
		if (curB.hitTest(human.p4)) {
			//контакт ног персонажа с платформой
			prityazhenie = 0;
			upact = false;
			jumptime = 0;
			jumpstep = 40;
			if (humanjump == true) {
				humanjump = false;
			}
			if (!curB.hitTest(human.p4)) {
				while (!curB.hitTest(human.p4)) {
					human._y += 0.1;
				}
			}
			if (curB.hitTest(human.p4)) {
				while (curB.hitTest(human.p4)) {
					human._y -= 0.1;
				}
			}
		} else {
			prityazhenie = 20;
		}
		if (curB.hitTest(human.p3)) {
			//контакт c платформой справа
			human._x -= humanstep;
		}
		if (curB.hitTest(human.p3) && humanreversed == true) {
			//контакт с платформой слева
			human._x += humanstep*2;
		}
		if (curB.hitTest(human.p2)) {
			//контакт головы персонажа с платформой
			upact = true;
			hero._y = curB._y-curB._height/2-hhy;
		}
	}
};
onEnterFrame = function () {
	human._y += prityazhenie; //притяжение вниз
	checkHitPlatform();
	Movement();
	//----------- прыжок
	if (((Key.isDown(key.UP) && Key.isDown(key.RIGHT)) || (Key.isDown(key.LEFT) && Key.isDown(key.UP)) || (Key.isDown(key.UP))) && upact == false) {
		humanjump = true;
	} else {
		humanjump = false;
	}
	if (humanjump == true && jumptime<5) {
		human.gotoAndPlay(2);
		human._y -= jumpstep;
		jumptime += 1;
		jumpstep -= grav;
	}
	//-----------                  
};


Последний раз редактировалось Обломов; 02.01.2012 в 21:32. Причина: удалил неиспользуемые переменные