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

Регистрация: Mar 2007
Сообщений: 319
Всё верно найти радиус окружности, затем посчитать угловую скорость. Позиция шалит скорее всего потому что используешь дисплейные координаты, там точность 0.2 или потому что ты рисуешь окружность после того как посчитал положение машинки.

Код AS3:
var carAngle:Number = (car.rotation - 90) * Math.PI / 180;
var carX:Number     = car.x;
var carY:Number     = car.y;
var coneX:Number    = cone.x;
var coneY:Number    = cone.y;
var v:Number        = 2;
 
stage.addEventListener(MouseEvent.CLICK, onClick);
stage.addEventListener(Event.ENTER_FRAME, onFrame);
 
function onClick (event:MouseEvent):void
{
	coneX = cone.x = stage.mouseX;
	coneY = cone.y = stage.mouseY;
}
 
function onFrame (event:Event):void
{
	var dx:Number = coneX - carX;
	var dy:Number = coneY - carY;
	var f:Number  = Math.sqrt(dx * dx + dy * dy);
 
	if(f >= v)
	{
		var d:Number  = carAngle - Math.PI / 2;
		var r:Number  = f / 2 / Math.cos(d - Math.atan2(dy, dx));
 
		graphics.clear();
		graphics.lineStyle(1);
		graphics.drawCircle(car.x + r * Math.cos(d), car.y + r * Math.sin(d), r);
 
		carAngle -= v / r;
		car.x = carX += v * Math.cos(carAngle);
		car.y = carY += v * Math.sin(carAngle);
		car.rotation = carAngle * 180 / Math.PI + 90;
	}
}
car.swf   (1.1 Кб)
Вложения
Тип файла: swf car.swf (1.1 Кб, 120 просмотров)


Последний раз редактировалось Nooob; 11.07.2014 в 21:52.