Пятница, 19 Апреля 2024, 22:35

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Adobe Flash и Создание флэш-игр » Движение к обьекту (Как организовать движение объекта в точку клика мыши?)
Движение к обьекту
LaendelДата: Воскресенье, 07 Августа 2011, 05:48 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Не могу понять как сделать так что бы кликаешь в определенную точку и персонаж(Кубик)двигался к месту клика. wacko
Помогите простым примером или пошлите меня туда где эта фишка описана...


АгронормДата: Воскресенье, 07 Августа 2011, 07:15 | Сообщение # 2
был не раз
Сейчас нет на сайте
берешь координаты объекта, координаты курсора мыши в момент нажатия и двигаешь кубик с помощью цикла
LaendelДата: Понедельник, 08 Августа 2011, 22:02 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Звучит просто.А на деле даже не знаю с чего начать...

Kansas_CatДата: Понедельник, 08 Августа 2011, 22:35 | Сообщение # 4
частый гость
Сейчас нет на сайте
А какой AS?
LaendelДата: Вторник, 09 Августа 2011, 00:20 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Action Script 3...
Adobe Flash CS5...


АгронормДата: Вторник, 09 Августа 2011, 08:41 | Сообщение # 6
был не раз
Сейчас нет на сайте
Laendel, посмотри вот это,
заменишь функцию движения мыши на нажатие


Сообщение отредактировал Агронорм - Вторник, 09 Августа 2011, 10:48
LaendelДата: Суббота, 05 Ноября 2011, 20:29 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Народ. Объясните как сделать так что бы пуля(кубик)летел в направление клика и дальше.
Вот код что я написал.

Все прокомментировано.Во Fla только два объекта это Hero и mc_bullet.
Помогите.Ну или поугарайте над говнопроггером и укажите на ошибки... smile


Человек-панчлайнДата: Суббота, 05 Ноября 2011, 20:33 | Сообщение # 8
Action Script МАНЬЯК!
Сейчас нет на сайте
Quote (Laendel)
function bulletMove(e:Event):void {
//А что тут писать я даже не знаю.Что перепробовал то работает некоректно.Обидно блин...
}

Делай переменную speed(ну или числами пиши, как удобней) и пиши так
Quote
//Движение по оси X
bullet_mc.x=mousex-bulet_mc.x+speed;
//Движение по оси Y
bullet_mc.y=mousey-bulet_mc.y+speed;

потом делай переодическую функцию. Проверить пока не могу, но если что скажешь, разберемся.


DMScript - мой язык программирования
<--- Скажи "ДА!" загаживанию форума! Мы за троллинг, флуд и оффтоп!
LaendelДата: Суббота, 05 Ноября 2011, 21:19 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Забыл упомянуть что пишу (Пытаюсь писать) на AS3.
Человек-панчлайн, Не работает.Пуля дергается в эпилептическом припадке.
Вот Fla файл на всякий случай.
Тыц


Человек-панчлайнДата: Суббота, 05 Ноября 2011, 21:40 | Сообщение # 10
Action Script МАНЬЯК!
Сейчас нет на сайте
Laendel, сейчас посмотрим

Добавлено (05.11.2011, 21:40)
---------------------------------------------
вообщем покрутил, максимум что выжал:

Code

import flash.events.MouseEvent;//Импорт чего-то там...
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;

var mousex:Number;//Переменная для оси х
var mousey:Number;//Переменная для оси у
var bullet:MovieClip = new mc_bullet;//Переменная для создания пули
var bulletSpeed:Number = 2;//Переменная для скорости пули

stage.addEventListener(MouseEvent.CLICK,mouseClick);//Слушатель для клика мыши
stage.addEventListener(Event.ENTER_FRAME,bulletMove);//Слушатель для движения пули
stage.addEventListener(KeyboardEvent.KEY_DOWN,moveHero);//Слушатель для движения Hero
function mouseClick(e:MouseEvent):void//Функция для клика мыши
{
  mousex = mouseX;//Узнаем ось по х
  mousey = mouseY;//Узнаем ось по у
  addChild(bullet);//Рисуем пулю(Кубик)
  bullet.x = hero.x;//Позиционируем кубик(Пулю) там где и Hero по х
  bullet.y = hero.y;//Позиционируем кубик(Пулю) там где и Hero по у
}
function moveHero(e:KeyboardEvent):void//Функция для движения Hero.
{
  //Движение с помощью WASD(У меня кнопка Left не пашет на буке <img src="http://s12.ucoz.net/sm/1/sad.gif" border="0" align="absmiddle" alt="sad" />  )
  if (e.keyCode == 87)//W
  {
   hero.y -= 5;
  }
   if (e.keyCode == 83)//S
  {
   hero.y += 5;
  }
    if (e.keyCode == 65)//A
  {
   hero.x -= 5;
  }
    if (e.keyCode == 68)//D
  {
   hero.x +=5;
  }
}
function bulletMove(e:Event):void {
  //Движение по оси X  
  bullet.x=bullet.x+(mouseX-bullet.x)/5;  
  //Движение по оси Y  
  bullet.y=bullet.y+(mouseY-bullet.y)/5;

}


DMScript - мой язык программирования
<--- Скажи "ДА!" загаживанию форума! Мы за троллинг, флуд и оффтоп!
LaendelДата: Суббота, 05 Ноября 2011, 22:17 | Сообщение # 11
почетный гость
Сейчас нет на сайте
Человек-панчлайн, В принципе то что надо.Можно закрутить креативно, но как мне удалить объект когда он доберется?
Написал это но реакции ноль...
if(bullet.x == mousex)//Проверяет равны ли координаты пули координатам клика по х
{
removeChild(bullet);
}

Я немного изменил твой алгоритм.
bullet.x=bullet.x+(mousex-bullet.x)/5;
bullet.y=bullet.y+(mousey-bullet.y)/5;
Там у меня при клике в переменные mousex и mousey вбиваются координаты мыши.У тебя в каждом фрейме обновлялись координаты мыши а так есть не меняющиеся координаты и пуля летит строго в точку клика.
/5 как понимаю это кадры до конца пути?А можешь перевести на русский весь алгоритм а то даже смысл не улавливаю.Что для чего там?
Но в целом очень круто все.Подобное я только с Tween Lite бы мог сделать,спасибо! biggrin




Сообщение отредактировал Laendel - Суббота, 05 Ноября 2011, 22:20
Человек-панчлайнДата: Суббота, 05 Ноября 2011, 22:22 | Сообщение # 12
Action Script МАНЬЯК!
Сейчас нет на сайте
Деление на пять это просто число от фонаря. Просто помню где-то читал что-то такое в туторе каком-то (не по флешу) и там было деление(на 6, но не суть важно).
Quote (Laendel)
но как мне удалить объект когда он доберется?

до стены/врага или до курсора?


DMScript - мой язык программирования
<--- Скажи "ДА!" загаживанию форума! Мы за троллинг, флуд и оффтоп!
LaendelДата: Суббота, 05 Ноября 2011, 22:34 | Сообщение # 13
почетный гость
Сейчас нет на сайте
mousex и mousey это координаты клика мыши.Нужно удалить объект когда координаты клика и пули будут совпадать или хотя бы находиться рядом.
Весь смысл этого штурма мозга что бы создать выстрел.Искал в нете но там там заумно написано...
Пытался разобраться с методами MathAtan2,Math.cos,Math.sin но нигде они не описаны туманно.
Вот кстати статья интересная по этому делу...
Тыц




Сообщение отредактировал Laendel - Суббота, 05 Ноября 2011, 22:38
Человек-панчлайнДата: Воскресенье, 06 Ноября 2011, 08:50 | Сообщение # 14
Action Script МАНЬЯК!
Сейчас нет на сайте
Quote (Laendel)
выстрел

если ты хочешь сделать выстрел, то явно надо чтобы пуля летела не до мышки, а до препятствия. Сейчас напишу по-быстрому.


DMScript - мой язык программирования
<--- Скажи "ДА!" загаживанию форума! Мы за троллинг, флуд и оффтоп!
noTformaTДата: Воскресенье, 06 Ноября 2011, 13:05 | Сообщение # 15
Ukrainian independent game developer
Сейчас нет на сайте
Самое простое движение через вектор направления

var speed:Number = 5;
var rx:Number = _mouseX - x; //получаем расстояние по по оси х
var ry:Number = _mouseY - y; //получаем расстояние по по оси х
var dist = Math.sqrt(rx*rx+ry*ry); //полное прямое движения
var dx:Number = rx/dist; // нормализуем вектор движения по х, тоесть значение он примет от [-1..1]
var dy:Number = ry/dist; // нормализуем вектор движения по y, тоесть значение он примет от [-1..1]

x+= dx * speed; // прибавляем к х умноженный вектор движения по х на скорость,
y+= dy * speed; // прибавляем к у умноженный вектор движения по у на скорость,


@noTformaT
Человек-панчлайнДата: Воскресенье, 06 Ноября 2011, 13:07 | Сообщение # 16
Action Script МАНЬЯК!
Сейчас нет на сайте
Quote
mousex и mousey это координаты клика мыши.Нужно удалить объект когда координаты клика и пули будут совпадать или хотя бы находиться рядом.
Весь смысл этого штурма мозга что бы создать выстрел.Искал в нете но там там заумно написано...

Вечером домой приду могу дать исходник ТДС, с движением и пулями, врезающимися в стены.


DMScript - мой язык программирования
<--- Скажи "ДА!" загаживанию форума! Мы за троллинг, флуд и оффтоп!
LaendelДата: Воскресенье, 06 Ноября 2011, 13:33 | Сообщение # 17
почетный гость
Сейчас нет на сайте
Человек-панчлайн, Удалось разобраться с этим.Пуля летит куда надо и дальше.

Код

Вот Fla Тыц
Теперь дело за малым,сообразить как сделать так что бы пуль было много а не одна(При повторном клике предыдущая исчезает) и удалить ее когда она выходит за приделы сцены.




Сообщение отредактировал Laendel - Воскресенье, 06 Ноября 2011, 13:33
Человек-панчлайнДата: Воскресенье, 06 Ноября 2011, 15:53 | Сообщение # 18
Action Script МАНЬЯК!
Сейчас нет на сайте
Laendel, если ты хочешь сделать стрелковое оружие, то имхо, для отрисовки эффекта лучше чертить линию до точки стокновения с объектом.

DMScript - мой язык программирования
<--- Скажи "ДА!" загаживанию форума! Мы за троллинг, флуд и оффтоп!
LaendelДата: Воскресенье, 06 Ноября 2011, 17:22 | Сообщение # 19
почетный гость
Сейчас нет на сайте
Человек-панчлайн,
Quote (Человек-панчлайн)
если ты хочешь сделать стрелковое оружие, то имхо, для отрисовки эффекта лучше чертить линию до точки стокновения с объектом.
Отнюдь.Движение пули с актуальной скоростью будет создавать иллюзию шлейфа что нам и надо.
Кстати,а ты не знаешь как правильно создавать дубликаты пули или же их всех в массив запихнуть?

Добавлено (06.11.2011, 17:22)
---------------------------------------------
noTformaT, А этот метод Math.sqrt AS3 поддерживает а то я его в справке не нашел что-то...


Человек-панчлайнДата: Понедельник, 07 Ноября 2011, 09:17 | Сообщение # 20
Action Script МАНЬЯК!
Сейчас нет на сайте
Laendel, attachMovieClip, не?

DMScript - мой язык программирования
<--- Скажи "ДА!" загаживанию форума! Мы за троллинг, флуд и оффтоп!
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Adobe Flash и Создание флэш-игр » Движение к обьекту (Как организовать движение объекта в точку клика мыши?)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг