Показать сообщение отдельно
Старый 08.10.2011, 00:13
Ylik вне форума Посмотреть профиль Отправить личное сообщение для Ylik Найти все сообщения от Ylik
  № 6  
Ответить с цитированием
Ylik
 
Аватар для Ylik

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
Ну вот, в принципе уже больше похоже на то, что мне нужно.
Но всё-равно есть один косяк, с которым никак не могу справиться...
Когда объект сталкивается со стеной с левой стороны, и когда мышкой поворачиваем объект слева, то он как-то резко поворачивается, дёргается...
В общем, чтоб было более понятно, я прикрепила файл...
Может кто-нибудь знает, в чём дело? Очень буду рада за помощь!

Мой обновлённый код:
Код AS1/AS2:
step = 3;
 
onEnterFrame = function(){
	var dx = _xmouse - p._x;
	var dy = _ymouse - p._y;
	//Направление (угол) к цели
	var angle = Math.atan2(dy, dx);
	var dist = Math.sqrt(dx*dx + dy*dy);
	if(dist > step) {
		//пробуем пройти напролом
		tgtX = p._x + step * Math.cos(angle);
		tgtY = p._y + step * Math.sin(angle);
		p.p2.play();
		if (zone.hitTest(tgtX, tgtY, true)){
			p.p2.stop();
					if (!zone.hitTest(p._x, p._y, true)) {
							tgtX = p._x;
							tgtY = p._y;
							p._rotation = angle * 180/Math.PI;
					}
		}
		var timeDx = tgtX - p._x;
		var timeDy = tgtY - p._y;
		//направление движения
		direction = Math.atan2(timeDy, timeDx);
		var dAngle = dAngleDegree(direction*180/Math.PI, p._rotation);
		//поворачиваем клип в направлении движения на 5-ю часть
		var r = p._rotation + dAngle * .2;
		p._rotation = r;
		p._x = tgtX;
		p._y = tgtY;
	} else {
		//стоим
		p.p2.stop();
		tgtX = p._x;
		tgtY = p._y;
	}
}
 
function dAngleRadian(a1, a2) {
	var da = a1 - a2;
	if (da > Math.PI) {
		da = -Math.PI*2 + da;
	} else if (da < -Math.PI) {
		da = Math.PI*2 + da;
	}
	return da;
}
function dAngleDegree(a1, a2) {
	var da = a1 - a2;
	if (da > 180) {
		da = -360 + da;
	} else if (da < -180) {
		da = 360 + da;
	}
	return da;
}
function degree(a) {
	return a / Math.PI * 180;
}
function radian(a) {
	return a / 180 * Math.PI;
}
Вложения
Тип файла: rar Пример.rar (17.6 Кб, 47 просмотров)