Вход

Просмотр полной версии : расстояние между объектами


Faust de Morgue
10.07.2013, 02:13
Здравствуйте.
я пытаюсь создать шутер с видом сверху. ситуация такова:
на данном этапе я "научил" персонажа подбирать предметы с пола.
на следующем этапе я сделал так, чтобы не персонаж перемещался по экрану, а пол перемещался под ним. кроме того я поместил эти предметы внутрь мувиклипа, содержащего пол, чтобы они перемещались вместе с ним.

собственно после этого перестали действовать расчеты расстояния между персонажем и предметом.
хотя я использовал _root. и указал точный адрес. все равно не работает. я проверил и выявил что проблема именно в переменной rasst. но я не понимаю как это исправть.

код висит на объекте.
код такой:
on (rollOver) {
//расчитываем расстояние между героем и объектом по теореме пифагора а2 + б2 = с2
var rasstX = (oil._x - _root.HERO._x)*(oil._x - _root.HERO._x);
var rasstY = (oil._y - _root.HERO._y)*(oil._y - _root.HERO._y);
var rasst = Math.sqrt(rasstX + rasstY);

if (rasst < 60) { // проверяем достаточно ли близко к объекту подошел герой
oil._x += 400; // убираем объект с глаз долой
_root.flag.play(); // оповещение о выполнении задания
_root.notice.gotoAndPlay ("oil"); // конкретный текст оповещения
}
}

(чтобы подобрать предмет надо подойти к нему достаточно близко и провести над ним курсором)
(oil - это канистра которую надо подобрать)

iNils
10.07.2013, 02:44
1. Синтаксис on (что-то там) устарел, с выходом в марте 2002 года, Flash Player 6 (11 лет назад!). Я серьезно. Это предок динозавров.
2. Для работы с координатами клипов помещенных в другие клипы (а значит все координаты являются относительными к глобальным координатам) используют методы MovieClip.localToGlobal (point) и MovieClip.globalToLocal (point). То есть, приводят локальные координаты к глобальным, производят расчеты, а потом переводят их из глобальных к локальным.