Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
MrDead
15 / 15 / 6
Регистрация: 04.03.2014
Сообщений: 152
1

Ротация объектов

11.05.2014, 23:54. Просмотров 922. Ответов 6
Метки нет (Все метки)

Ф-ция поворачивания объекта к игроку
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private function mob_obzor(ev:Event):void
        {
            if (main_player.bg.hitTestObject(shere_vis))
            {
                for (i = 0; i < main_bgplatform.mass.length; i++)
            {
                main_bgplatform.mass[i].rotation = Math.atan2(main_bgplatform.mass[i].y - main_bgplatform.igrok.y,main_bgplatform.mass[i].x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
                rotation_mob = false;
            }
            }
            else
            {
                 rotation_mob = true;
            }
Ф-ция создания объектов на сцене
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function addmobs(obj:Object, x:uint, y:uint):void
        {
           
            switch (obj.id)
            {
        case 0:
            mob = new CreateMob(this,igrok);
            mob.x = x;
            mob.y = y - 1500;
            paint_high.addChild(mob);
            mass.push(mob);
                    break;
 
        }
В общем суть в том, что когда игрок входит в диапозон обзора моба(тобишь в shere_vis), он должен поворачиваться в нему, но вот получается так, что к какому бы объекту не подошел, все мобы смотрят на игрока, а надо чтобы поворачивался к игроку только тот, в чьем диапозоне он находится. Но вот что-то не особо получается, поробовал с массивом - удалось только поворачивать всех мобов к игроку) Подскажите что сделать(
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 23:54
Ответы с готовыми решениями:

Плавная ротация
Есть объект, он должен плавно менять ротацию по таймеру Например если ротация...

Удалить один из объектов и увеличить другой при соприкосновении объектов.
Как сделать так чтобы (Когда Sprite1 дотронулся до Sprite2 тогда sprite2...

Движение объектов
Здрасти. У меня есть дорога и машинка. как можно сделать чтобы машинка ехала...

Столкновение объектов
Ребят выручайте :) Есть класс Bot и есть класс Bullet. В каждом классе...

Пересечение объектов
Всем добрый день. Может кто подсказать как проверить столкновение объектов...

6
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
12.05.2014, 13:24 2
Лучший ответ Сообщение было отмечено MrDead как решение

Решение

Вам нужно проверять расстояние от моба до игрока и в том случае, если оно в заданном диапозоне (диапозон обзора моба) - посорачивать моба к игрок. Проверка осуществляется по формуле Пифагора.
1
MrDead
15 / 15 / 6
Регистрация: 04.03.2014
Сообщений: 152
13.05.2014, 17:38  [ТС] 3
Ладно, учту. Тогда другой вопрос. Я подумал что будет лучше поворачивать моба прямо из его класса

ActionScript 3
1
bg_mob.rotation = Math.atan2(bg_mob.y - main_bgplatform.igrok.y, bg_mob.x - main_bgplatform.igrok.x) * 180 / Math.PI + 90
bg_mob имеет начальные координаты 0,0. main_bgplatform.igrok также имеет координаты 0,0, но при движении они естественно меняются. Но почему-то данный вариант не работает. Когда игрок в диапозоне, моб поворачивается лицом ко мне и с какой-бы стороны игрок не подошел, моб поворачивается только на 90 градусов, то есть когда срабатывает enter_frame, по сути он должен следить за координатами игрокам и поворачиваться к нему, но при первом срабатывании ф-ции он повернется на 90 градусов и ступор, даже если игрок покинул зону и снова вошел с противоположной стороны, то он всё также стоит повернутый на 90 градусов...Никак не просеку в чем косяк
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
13.05.2014, 17:47 4
Как вариант - у Вас координаты игрока расчитываются относительно main_bgplatform, а координаты моба относительно класса родителя - соответственно их системы координат не совпадают.
Посмотрите на методы DisplayObject-a localToGlobal и globalToLocal.
0
MrDead
15 / 15 / 6
Регистрация: 04.03.2014
Сообщений: 152
13.05.2014, 18:23  [ТС] 5
Понял. Тогда вернемся к предыдущему варианту, в общем при добавлении мобов на сцену, я записываю их в массив mass, то есть создается предположим 5 элементов из объектов класса моба. Как мне записать или определить в hisstestobject, что конкретно в диапозоне этого моба находится игрок и поворачивать именно этого моба по элементу того массива, у которого стоит игрок? Можно сделать конечно таким образом
ActionScript 3
1
2
 main_bgplatform.mass[0].rotation = Math.atan2(main_bgplatform.mass[0].y - main_bgplatform.igrok.y,main_bgplatform.mass[0].x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
 main_bgplatform.mass[1].rotation = Math.atan2(main_bgplatform.mass[1].y - main_bgplatform.igrok.y,main_bgplatform.mass[1].x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
и т.д, но это слишком много лишнего кода получится и муторно выйдет, в общем не вариант, надо как-то упростить, как-то идентифицировать что ли моба, но я что-то не знаю как это сделать. В общем то в этом состоит основная проблема, мне бы разобраться получше и тогда сразу куча вопросов откинется в сторону
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
13.05.2014, 18:26 6
ActionScript 3
1
2
3
4
5
var mass:Array = [ m1, m2, m3, m4, m5 ]; // массив монстров
for each (var monster:Sprite in mass) // пробегаемся по всем монстрам в массиве
{
  // вписываем проверку
}
0
MrDead
15 / 15 / 6
Регистрация: 04.03.2014
Сообщений: 152
13.05.2014, 23:17  [ТС] 7
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
private function mob_obzor(ev:Event):void
        {
            for each (var monsters:Sprite in main_bgplatform.mass)
{
            if (main_bgplatform.igrok.bg.hitTestObject(shere_vis))
            {
                
                   
                    monsters.rotation = Math.atan2(monsters.y - main_bgplatform.igrok.y, monsters.x - main_bgplatform.igrok.x) * 180 / Math.PI - 90
                    rotation_mob = false;
            
                   
            }
Опять же, поворачиваются все мобы((

Добавлено через 4 часа 32 минуты
Всё разобрался, спасибо) получилось по теореме пифагора
0
13.05.2014, 23:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2014, 23:17

Столкновение объектов
Здравствуйте. Я раньше немного программировала на as2, и сейчас решила освоить...

Создание объектов
Есть, например, игрушка с массовым уничтожением зомбей. Нужно, чтобы зомби...

Удаление объектов
Как правильно удалить массив, который содержит в себе объекты класса, в котором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru